UALARM(3) | Руководство программиста Linux | UALARM(3) |
ualarm - планирует отправку сигнала через заданное число микросекунд
#include <unistd.h>
useconds_t ualarm(useconds_t usecs, useconds_t interval);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
ualarm():
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L) || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE || /* в версиях glibc <= 2.19: */ _BSD_SOURCE
Функция ualarm() планирует отправку сигнала SIGALRM вызывающему процессу (не менее чем) через usecs микросекунд. Задержка может быть слегка больше при большой загруженности системы, из-за, собственно, времени обработки этого вызова или из-за неточности хода системных часов.
Если сигнал не будет пойман или проигнорирован, то SIGALRM уничтожит процесс.
Если аргумент interval не равен нулю, то сигналы SIGALRM будут отправляться повторно каждые interval микросекунд после первого.
Эта функция возвращает число микросекунд, оставшихся от любого ранее установленного сигнала, или 0, если сигналов не запланировано.
Описание терминов данного раздела смотрите в 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) и т.д.).
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), usleep(3), time(7)
2017-09-15 |