Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       timer_settime,  timer_gettime  -  запускает/останавливает  и  возвращает состояние таймера
       POSIX некоторого процесса

LIBRARY

       Real-time library (librt, -lrt)

СИНТАКСИС

       #include <time.h>

       int timer_settime(timer_t timerid, int flags,
                         const struct itimerspec *restrict new_value,
                         struct itimerspec *_Nullable restrict old_value);
       int timer_gettime(timer_t timerid, struct itimerspec *curr_value);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       timer_settime(), timer_gettime():
           _POSIX_C_SOURCE >= 199309L

ОПИСАНИЕ

       timer_settime()  arms or disarms the timer identified by timerid.  The new_value  argument
       is  pointer  to  an  itimerspec structure that specifies the new initial value and the new
       interval for the timer.  The itimerspec structure is described in itimerspec(3type).

       Каждая подструктура структуры itimerspec представляет собой структуру timespec(3), которая
       позволяет  задавать  значение  времени  в  секундах  и  наносекундах. Эти значения времени
       отсчитываются  по  часам,  которые  были  указаны   при   создании   таймера   с   помощью
       timer_create(2).

       Если  new_value->it_value  равно  ненулевому  значению  (т. е., любое из подполей не равно
       нулю), то timer_settime() запускает таймер, устанавливая  ему  первое  время  срабатывания
       (если    таймер   уже   запущен,   то   предыдущие   параметры   перезаписываются).   Если
       new_value->it_value равно нулю (т. е., оба подполя равны нулю), то таймер выключается.

       В поле new_value->it_interval указывается период таймера в секундах и  наносекундах.  Если
       это  поле  равно  нулю,  то  каждый  раз,  когда таймер срабатывает, он перезапускается со
       значением, указанным в new_value->it_interval. Если new_value->it_interval равно нулю,  то
       таймер срабатывает только один раз, согласно заданному в it_value времени.

       По  умолчанию,  начальное  время  срабатывания, указанное в new_value->it_value, считается
       относительно текущего времени на часах таймера  на  момент  вызова.  Это  можно  изменить,
       указав  TIMER_ABSTIME  в  flags;  в  этом  случае  new_value->it_value рассматривается как
       абсолютное значение по часам таймера; то  есть  таймер  сработает,  когда  значение  часов
       достигнет  значения, указанного в new_value->it_value. Если указанное абсолютное время уже
       прошло, то таймер срабатывает немедленно и счётчик переполнения изменяется соответствующим
       образом (смотрите timer_getoverrun(2)).

       Если значение часов CLOCK_REALTIME корректируется (adjusted) и указано абсолютное значение
       у включённого таймера с  этими  часами,  то  срабатывание  таймера  будет  скорректировано
       соответствующим  образом.  Корректировка  часов  CLOCK_REALTIME не влияет на относительные
       таймеры, использующие эти часы.

       Если значение old_value не равно NULL, то оно указывает на буфер, который используется для
       возврата  предыдущего  интервала  таймера (в old_value->it_interval) и количества времени,
       которое осталось таймеру до срабатывания (в old_value->it_value).

       Вызов timer_gettime() возвращает  время  до  следующего  срабатывания  таймера  timerid  и
       интервал  в  буфер  curr_value. Оставшееся время до следующего срабатывания возвращается в
       curr_value->it_value; это всегда относительное значение, независимо от того, указывался ли
       флаг  TIMER_ABSTIME  при включении таймера. Если значение curr_value->it_value равно нулю,
       то   таймер   в   данный   момент    выключен.    Интервал    таймера    возвращается    в
       curr_value->it_interval.   Если   значение  curr_value->it_interval  равно  нулю,  то  это
       «одноразовый» таймер.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении timer_settime()  и  timer_gettime()  возвращается  0.  При  ошибке
       возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

       Эти функции могут завершиться со следующими ошибками:

       EFAULT Некорректный указатель new_value, old_value или curr_value.

       EINVAL Неверное значение timerid.

       timer_settime() может завершиться со следующими ошибками:

       EINVAL Значение    new_value.it_value    отрицательно;    или   new_value.it_value.tv_nsec
              отрицательно или больше 999999999.

ВЕРСИИ

       Данные системные вызовы появились в Linux 2.6.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ПРИМЕРЫ

       Смотрите timer_create(2).

СМ. ТАКЖЕ

       timer_create(2), timer_getoverrun(2), timespec(3), time(7)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,   Dmitry   Bolkhovskikh  <d20052005@yandex.ru>,  Yuri  Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.