[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Получение/установка значений таймера интервалов
Для прикладных программ, работающих в режиме реального времени, часто
бывает полезно установить таймер, который бы посылал сигнал по
окончанию заданного времени. getitimer(3) сохраняет текущее значение
таймера, заданного переменной which, в структуре с указателем value.
Системный вызов setitimer(3) устанавливает значение таймера, заданного
переменной which, равным значению из структуры с указателем value, и
если ovalue не равно нулю, сохраняет предыдущее значение таймера в
структуре с указателем ovalue. Структура itimerval определена в
<sys/time.h> следующим образом:
struct itimerval {
struct timeval it_interval; /* timer interval */
struct timeval it_value; /* current value */ }
Если поле it_value не равно нулю, то оно указывает время следующего
срабатывания таймера. getitimer(3) записывает в это поле время,
оставшееся до следующего срабатывания таймера. Если it_interval не
равно нулю, то оно задает значение, которое должно быть использовано
при перезагрузке поля it_value после срабатывания таймера. Установка
it_value равным нулю делает таймер неработоспособным, независимо от
значения it_interval. Установка it_interval равным нулю сделает таймер
неработоспособным после его первого срабатывания (при этом it_value не
должно быть равно нулю).
У структуры timeval два поля:
long tv_sec; /* seconds since Jan. 1, 1970 */
long tv_usec; /* microseconds */.
Символьные константы для which определены в <sys/time.h> следующим
образом:
ITIMER_REAL Таймер работает в реальном времени (настенные часы).
Время уменьшается с каждым тиканием часов, независимо
от того, исполняется ли связанный с таймером процесс.
Когда время кончается, посылается SIGALARM.
ITIMER_VIRTUAL Таймер работает в виртуальном времени. Время
уменьшается только тогда, когда процесс исполняется в
пользовательском режиме. Когда время кончается,
посылается SIGALARM.
ITIMER_PROF Время уменьшается только тогда, когда процесс
исполняется в режиме ядра или пользователя. Когда время
кончается, посылается SIGPROF. Так как этот сигнал
может прерывать системные вызовы процесса, программа,
использующая таймер, должна уметь восстанавливать
прерванные системные вызовы.
ПОЛУЧЕНИЕ/УСТАНОВКА ЗНАЧЕНИЯ ТАЙМЕРА ИНТЕРВАЛОВ
getitimer(3)
ИМЯ
getitimer, setitimer - получение/установка значений таймера
интервалов
ИСПОЛЬЗОВАНИЕ
#include <sys/time.h>
int getitimer(int which,
struct itimerval *value);
int setitimer(int which,
struct itimerval *value,
struct itimerval *ovalue);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
успех - 0
неуспех - -1 и errno установлена