ualarm(3) планирует отправку сигнала через заданное число микросекунд

ОБЗОР

#include <unistd.h>


useconds_t ualarm(useconds_t usecs, useconds_t interval);

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

ualarm():

Начиная с glibc 2.12:
_BSD_SOURCE ||
    (_XOPEN_SOURCE >= 500 ||
        _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
    !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
До glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

ОПИСАНИЕ

Функция ualarm() планирует отправку сигнала SIGALRM вызывающему процессу (не менее чем) через usecs микросекунд. Задержка может быть слегка больше при большой загруженности системы, из-за, собственно, времени обработки этого вызова или из-за неточности хода системных часов.

Если сигнал не будет пойман или проигнорирован, то SIGALRM уничтожит процесс.

Если аргумент interval не равен нулю, то сигналы SIGALRM будут отправляться повторно каждые interval микросекунд после первого.

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

Эта функция возвращает число микросекунд, оставшихся от любого ранее установленного сигнала, или 0, если сигналов не запланировано.

ОШИБКИ

EINTR
Прервано сигналом; см. signal(7).
EINVAL
Значение usec или interval больше 1000000 (в тех системах, где это считается ошибкой).

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
ИнтерфейсАтрибутЗначение
ualarm() безвредность в нитяхбезвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ

4.3BSD, POSIX.1-2001. В POSIX.1-2001 функция ualarm() помечена как устаревшая. В POSIX.1-2008 описание ualarm() было удалено. В 4.3BSD, SUSv2 и POSIX нет описания ошибок.

ЗАМЕЧАНИЯ

В POSIX.1-2001 не указано, что случится, если значение usecs равно 0. В Linux (и, вероятно, в большинстве систем) произойдёт отмена любого взведённого будильника.

Тип useconds_t является беззнаковым целым типом, способным хранить целые числа в диапазоне [0,1000000]. В первоначальной реализации BSD и glibc до версии 2.1, аргументы ualarm() имели тип unsigned int. Программы будут более переносимы, если они никогда не будут явно упоминать тип useconds_t.

Взаимодействие этой функции с другими функциями таймера, такими как alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), usleep(3) не определено.

Эта функция устарела. Используйте вместо неё setitimer(2) или интервальные таймеры POSIX (timer_create(2) и т.д.).