.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH timer_settime 2 "2 мая 2024 г." "Linux man\-pages 6.8" .SH ИМЯ timer_settime, timer_gettime \- запускает/останавливает и возвращает состояние таймера POSIX некоторого процесса .SH LIBRARY Real\-time library (\fIlibrt\fP, \fI\-lrt\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint timer_gettime(timer_t \fP\fItimerid\fP\fB, struct itimerspec *\fP\fIcurr_value\fP\fB);\fP \fBint timer_settime(timer_t \fP\fItimerid\fP\fB, int \fP\fIflags\fP\fB,\fP \fB const struct itimerspec *restrict \fP\fInew_value\fP\fB,\fP \fB struct itimerspec *_Nullable restrict \fP\fIold_value\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBtimer_settime\fP(), \fBtimer_gettime\fP(): .nf _POSIX_C_SOURCE >= 199309L .fi .SH ОПИСАНИЕ \fBtimer_settime\fP() arms or disarms the timer identified by \fItimerid\fP. The \fInew_value\fP argument is pointer to an \fIitimerspec\fP structure that specifies the new initial value and the new interval for the timer. The \fIitimerspec\fP structure is described in \fBitimerspec\fP(3type). .P Каждая подструктура структуры \fIitimerspec\fP представляет собой структуру \fBtimespec\fP(3), которая позволяет задавать значение времени в секундах и наносекундах. Эти значения времени отсчитываются по часам, которые были указаны при создании таймера с помощью \fBtimer_create\fP(2). .P Если \fInew_value\->it_value\fP равно ненулевому значению (т. е., любое из подполей не равно нулю), то \fBtimer_settime\fP() запускает таймер, устанавливая ему первое время срабатывания (если таймер уже запущен, то предыдущие параметры перезаписываются). Если \fInew_value\->it_value\fP равно нулю (т. е., оба подполя равны нулю), то таймер выключается. .P В поле \fInew_value\->it_interval\fP указывается период таймера в секундах и наносекундах. Если это поле равно нулю, то каждый раз, когда таймер срабатывает, он перезапускается со значением, указанным в \fInew_value\->it_interval\fP. Если \fInew_value\->it_interval\fP равно нулю, то таймер срабатывает только один раз, согласно заданному в \fIit_value\fP времени. .P .\" By experiment: the overrun count is set correctly, for CLOCK_REALTIME. По умолчанию, начальное время срабатывания, указанное в \fInew_value\->it_value\fP, считается относительно текущего времени на часах таймера на момент вызова. Это можно изменить, указав \fBTIMER_ABSTIME\fP в \fIflags\fP; в этом случае \fInew_value\->it_value\fP рассматривается как абсолютное значение по часам таймера; то есть таймер сработает, когда значение часов достигнет значения, указанного в \fInew_value\->it_value\fP. Если указанное абсолютное время уже прошло, то таймер срабатывает немедленно и счётчик переполнения изменяется соответствующим образом (смотрите \fBtimer_getoverrun\fP(2)). .P .\" Similar remarks might apply with respect to process and thread CPU time .\" clocks, but these clocks are not currently (2.6.28) settable on Linux. Если значение часов \fBCLOCK_REALTIME\fP корректируется (adjusted) и указано абсолютное значение у включённого таймера с этими часами, то срабатывание таймера будет скорректировано соответствующим образом. Корректировка часов \fBCLOCK_REALTIME\fP не влияет на относительные таймеры, использующие эти часы. .P Если значение \fIold_value\fP не равно NULL, то оно указывает на буфер, который используется для возврата предыдущего интервала таймера (в \fIold_value\->it_interval\fP) и количества времени, которое осталось таймеру до срабатывания (в \fIold_value\->it_value\fP). .P Вызов \fBtimer_gettime\fP() возвращает время до следующего срабатывания таймера \fItimerid\fP и интервал в буфер \fIcurr_value\fP. Оставшееся время до следующего срабатывания возвращается в \fIcurr_value\->it_value\fP; это всегда относительное значение, независимо от того, указывался ли флаг \fBTIMER_ABSTIME\fP при включении таймера. Если значение \fIcurr_value\->it_value\fP равно нулю, то таймер в данный момент выключен. Интервал таймера возвращается в \fIcurr_value\->it_interval\fP. Если значение \fIcurr_value\->it_interval\fP равно нулю, то это «одноразовый» таймер. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBtimer_settime\fP() и \fBtimer_gettime\fP() возвращается 0. При ошибке возвращается \-1, а в \fIerrno\fP содержится код ошибки. .SH ОШИБКИ Эти функции могут завершиться со следующими ошибками: .TP \fBEFAULT\fP Некорректный указатель \fInew_value\fP, \fIold_value\fP или \fIcurr_value\fP. .TP \fBEINVAL\fP .\" FIXME . eventually: invalid value in flags Неверное значение \fItimerid\fP. .P \fBtimer_settime\fP() может завершиться со следующими ошибками: .TP \fBEINVAL\fP Значение \fInew_value.it_value\fP отрицательно; или \fInew_value.it_value.tv_nsec\fP отрицательно или больше 999999999. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ Linux 2.6. POSIX.1\-2001. .SH ПРИМЕРЫ Смотрите \fBtimer_create\fP(2). .SH "СМОТРИТЕ ТАКЖЕ" \fBtimer_create\fP(2), \fBtimer_getoverrun\fP(2), \fBtimespec\fP(3), \fBtime\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .