Книга: Программирование для Linux. Профессиональный подход
8.13. Функция setitimer(): задание интервальных таймеров
8.13. Функция setitimer(): задание интервальных таймеров
Функция setitimer()
является обобщением системного вызова alarm()
. Она планирует доставку сигнала по истечении заданного промежутка времени.
С помощью функции setitimer()
можно создавать таймеры трех типов.
? ITIMER_REAL
. По истечении указанного времени процессу посылается сигнал SIGALRM
.
? ITIMER_VIRTUAL
. После того как процесс отработал требуемое время, ему посылается сигнал SIGVTALRM
. Время, когда процесс не выполнялся (работало ядро или другой процесс), не учитывается.
? ITIMER_PROF
. По истечении указанного времени процессу посылается сигнал SIGPROF
. Учитывается время выполнения самого процесса, а также запускаемых в нем системных вызовов.
Код таймера задается в первом аргументе функции setitimer()
. Второй аргумент — это указатель на структуру типа itimerval
, содержащую параметры таймера. Третий аргумент либо равен NULL
, либо является указателем на другую структуру itimerval
, куда будут записаны прежние параметры таймера.
В структуре itimerval
два поля.
? it_value
. Здесь находится структура типа timeval
, где записано время отправки сигнала. Если это поле равно нулю, таймер отменяется.
? it_interval
. Это еще одна структура timeval
, определяющая, что произойдет после отправки первого сигнала. Если она равна нулю, таймер будет отменен. В противном случае здесь записан интервал генерирования сигналов.
Структура timeval
была описана в разделе 8.7. "Функция gettimeofday()
: системные часы"
В листинге 8.11 показано, как с помощью функции setitimer()
отслеживать выполнение программы. Таймер настроен на интервал 250 мс, по истечении которого генерируется сигнал SIGVTALRM
.
- 2.1.3. Функция getopt_long()
- Группировка по встроенным функциям и UDF
- Задание a1 для исполнителя Робот
- 19.1.1. Функция jQuery()
- Функция strcmp( )
- Домашнее задание
- Управление функциями узла
- Задание
- Функция программного обеспечения
- 2.3.6. Задание объектов физической памяти
- 3.2. Ключи типа key_t и функция ftok
- Техническое задание