other versions
- wheezy 0.98-4
other sections
GETITIMER(2) | Руководство программиста Linux | GETITIMER(2) |
ИМЯ¶
getitimer, setitimer - получить или установить значение внутреннего таймераОБЗОР¶
#include
<sys/time.h>
int
getitimer(int which, struct itimerval
*value);
int
setitimer(int which, const struct itimerval
*value, struct itimerval
*ovalue);
ОПИСАНИЕ¶
Система предоставляет каждому процессу три внутренних таймера, каждый из которых работает в отдельном временном домене. Когда любой из этих таймеров истекает, процессу, в котором функционировал данный таймер посылается сигнал и таймер (потенциально) перезапускается.- ITIMER_REAL
- работает в реальном времени и по истечении отправляет сигнал SIGALRM .
- ITIMER_VIRTUAL
- работает только, когда процесс выполняется и по истечении отправляет сигнал SIGVTALRM .
- ITIMER_PROF
- работает и когда процесс выполняется, и когда система работает в интересах процесса. Запущенный совместно с ITIMER_VIRTUAL, данный таймер обычно используется для профилирования времени, которое приложение проводит в режиме пользователя и в режиме ядра. По истечении отправляет сигнал SIGPROF .
struct itimerval { struct timeval it_interval; /* next value */ struct timeval it_value; /* current value */ }; struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ };
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
В случае успеха, возвращается ноль. В случае ошибки, возвращается -1 и значение errno устанавливается соответствующим образом.ОШИБКИ¶
- EFAULT
- value или ovalue не являются правильными указателями.
- EINVAL
- which не является одним из значений ITIMER_REAL, ITIMER_VIRT, или ITIMER_PROF.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
SVr4, 4.4BSD (Данный вызов появился сперва в 4.2BSD).СМОТРИ ТАКЖЕ¶
gettimeofday(2), sigaction(2), signal(2)БАГИ¶
Под Linux, генерация и доставка сигнала разделены и каждому сигналу разрешается генерировать только один недоставленный сигнал. Таким образом, получается, что при очень сильной загрузке системы, ITIMER_REAL таймер будет истекать перед тем как будет доставлен сигнал от предыдущего истекания таймера. Второй сигнал в этом случае будет потерян.ПЕРЕВОД¶
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 20041993-08-05 | Linux 0.99.11 |