MAN getitimer 2

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск


Вернуться в раздел мануалов


Это - статья, добавленная автоматически, при помощие специальной программы-робота. Пожалуйста убедитесь что статья добавлена коррекно, исправьте её если это потребуется и уберите пометку {{Bot added}}].

Содержание

[править] Имя

getitimer, setitimer - получить или установить значение внутреннего таймера

[править] Обзор

0

#include <sys/time.h>

int getitimer(int

which , struct itimerval

  • value );

int setitimer(int

which , const struct itimerval

  • value ,

struct itimerval

  • ovalue );

[править] Описание

Система предоставляет каждому процессу три внутренних таймера, каждый из которых работает в отдельном временном домене. Когда любой из этих таймеров истекает, процессу, в котором функционировал данный таймер посылается сигнал и таймер (потенциально) перезапускается.

1.5i ITIMER_REAL работает в реальном времени и по истечении отправляет сигнал SIGALRM . ITIMER_VIRTUAL работает только, когда процесс выполняется и по истечении отправляет сигнал SIGVTALRM . ITIMER_PROF работает и когда процесс выполняется, и когда система работает в интересах процесса. Запущенный совместно с ITIMER_VIRTUAL , данный таймер обычно используется для профилирования времени, которое приложение проводит в режиме пользователя и в режиме ядра. По истечении отправляет сигнал SIGPROF .

Значения таймера задаются с помощью следующих структур:

0

.5i

struct itimerval {

   struct timeval it_interval; /* next value */
   struct timeval it_value;    /* current value */

}; struct timeval {

   long tv_sec;                /* seconds */
   long tv_usec;               /* microseconds */

};



Фнкция getitimer заполняет структуру, предоставляемую как value текущими установками таймера, который обозначается как which (одно из значений ITIMER_REAL , ITIMER_VIRTUAL , или ITIMER_PROF ). Элемент it_value устанавливает ожидаемое время, оставшееся на таймере или ноль если таймер запрещается. Похожим образом устанавливается it_interval для значения сброса. Функция setitimer устанавливает указанный таймер в значение, указанное в value . Если ovalue не ноль, там будет сохранено старое значение таймера.

Таймеры уменьшающиеся от it_value до нуля, генерируют сигнал и сбрасываются в it_interval . Таймер, который установлен в ноль

( it_value является нулем или таймер истёк и it_interval является нулём) останавливается.

Оба значения tv_sec и tv_usec являются важными при определении длительности работы таймера.

Таймеры никогда не истекают до затребованного времени, напротив они немного запаздывают, в зависимости от шага системного таймера (в настоящий момент 10 миллисекунд). По истечении будет сгенерирован сигнал и произойдёт сброс таймера. Если таймер истекает в момент когда процесс активен (это всегда так для ITIMER_VIRT ), то сигнал будет доставлен немедленно после генерации. В противном случае, доставка будет отложена на небольшое время, которое зависит от степени загрузки системы.

[править] Возвращаемое значение

В случае успеха, возвращается ноль. В случае ошибки, возвращается -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> 2004

[править] Комментарии к man файлу

Copyright 7/93 by Darren Senn <sinster@scintilla.santa-clara.ca.us>
Based on a similar page Copyright 1992 by Rick Faith
May be freely distributed
Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>

Дата последней коррекции перевода 29.05.2004
Перевод с английского сделал Виктор Вислобоков <corochoone@perm.ru>
http://www.linuxshare.ru/projects/trans/mans.html

Личные инструменты