The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

setitimer (2)
  • setitimer (2) ( Solaris man: Системные вызовы )
  • setitimer (2) ( FreeBSD man: Системные вызовы )
  • >> setitimer (2) ( Русские man: Системные вызовы )
  • setitimer (2) ( Linux man: Системные вызовы )
  • setitimer (3) ( POSIX man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

    getitimer, setitimer - считывает или устанавливает значение таймера интервалов (interval timer)  

    СИНТАКСИС

    #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, когда значение таймера становится равным 0.
    ITIMER_VIRTUAL
    уменьшается только во время работы процесса и подает сигнал SIGVTALRM, когда значение таймера становится равным 0.
    ITIMER_PROF
    уменьшается во время работы процесса и когда система выполняет что-либо по заданию процесса. Этот таймер обычно используется вместе с ITIMER_VIRTUAL для профилирования времени работы приложения в пользовательской области и в области ядра. Когда значение таймера становится равным 0, подается сигнал SIGPROF.

    Величина, на которую устанавливается таймер, определяется следующими структурами:

    struct itimerval { struct timeval it_interval; /* следующее значение */ struct timeval it_value; /* текущее значение */ }; struct timeval { long tv_sec; /* секунды */ long tv_usec; /* микросекунды */ };

    Функция getitimer(2) заполняет структуру value текущим значением which ( ITIMER_REAL, ITIMER_VIRTUAL, или ITIMER_PROF). it_value устанавливается в соответствии с тем количеством времени, которое осталось на таймере, или приравнивается нулю, если таймер выключен. Аналогично устанавливается it_interval. Функция setitimer(2) устанавливает значение таймера равным величине, указанной в 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 может закончиться до того момента, как будет доставлен сигнал от предыдущего. И таким образом, сигнал от последующего таймера будет потерян.


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    СМ. ТАКЖЕ
    НАЙДЕННЫЕ ОШИБКИ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру