SIGVTALRM

SIGVTALRMсигнал на POSIX-сумісних платформах, який посилається в процесу при вичерпанні віртуального таймера. Символьна змінна SIGVTALRM оголошена у заголовному файлі signal.h. Символьні імена для процесів використовуються через те, що їхні номери залежать від конкретної платформи.

SIGVTALRM
Опис Вичерпання віртуального таймера (може бути перехопленим або проігнорованим)
Дія за замовчуванням Завершує процес
SA_SIGINFO macros

None

Етимологія

SIG є загальноприйнятий префіксом для назв сигналів. VT (англ. virtual) — віртуальний, ALRM (англ. alarm) — тривога, сигнал будильника.

Використання

Віртуальний інтервальний таймер може бути встновлений через системний виклик setitimer().

Віртуальний інтервальний таймер виконує відлік часу лише тоді, коли процес є активним. На відміну від нього (невіртуальний) інтервальний таймер, виконує відлік реального часу. Це значить, що на процесі, який знаходиться в стані очікування (спить), віртуальний інтервальний таймер буде зупиненим.

Приклад

Програма мовою C, яка активує обробник віртуального таймера через 2 секунди від початку своєї роботи і надалі — через кожні 0.25 секунди:

#include <stdio.h>
#include <signal.h>
#include <sys/time.h>

void alarm_handler(int sig)
{
  printf("vt alarm! %d\n", sig);
}

int main(int argc, char *argv[])
{
  signal(SIGVTALRM, alarm_handler);     /* встановлюємо обробник */
  struct itimerval timer;
  timer.it_value.tv_sec = 2;
  timer.it_value.tv_usec = 0;
  timer.it_interval.tv_sec = 0;
  timer.it_interval.tv_usec = 250000;
  setitimer(ITIMER_VIRTUAL, &timer, NULL);
  while(1);
  // getc(stdin);
  return 0;
}

Якщо нескінчений цикл (while(1);) замінити на введення зі стандартного пристрою з очікуванням (getc(stdin);), то віртуальний інтервальний таймер не спрацює через те, що процес буде перебувати в стані очікування вводу (тобто — процес буде неактивним).

Див. також

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.