SIGVTALRM
Опис | Вичерпання віртуального таймера (може бути перехопленим або проігнорованим) |
---|---|
Дія за замовчуванням | Завершує процес |
SA_SIGINFO macros | |
None |
SIGVTALRM — сигнал на POSIX-сумісних платформах, який посилається в процесу при вичерпанні віртуального таймера. Символьна змінна SIGVTALRM оголошена у заголовному файлі signal.h
. Символьні імена для процесів використовуються через те, що їхні номери залежать від конкретної платформи.
Етимологія
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);
), то віртуальний інтервальний таймер не спрацює через те, що процес буде перебувати в стані очікування вводу (тобто — процес буде неактивним).
Див. також
- SIGALRM
- п
- о
- р