Ожидать сигнал до истечения времени
#include <signal.h>int sigtimedwait( const sigset_t *set,siginfo_t *info,const struct timespec *timeout );
NULL
или указатель на структуру siginfo_t, где функция сохранит информацию о сигнале.NULL
или указатель на структуру struct timespec, определяющую максимальное время ожидания.libc
Функция sigtimedwait() выбирает ожидающий сигнал из набора set, автоматически очищает его из набора ожидающих сигналов процесса и возвращает его номер.
Если не NULL
, sigtimedwait() сохраняет сигнал в поле si_signo структуры info и причину сигнала в поле si_code.
Если в очереди присутствует значение для выбранного сигнала, извлекается первое из них и если info не равен NULL
, значение сохраняется в поле si_value структуры info. Системные ресурсы, использованные для сохранения сигнала в очереди, освобождаются для переиспользования. Если с поступившим сигналом не ассоциировано значение, значение поля si_value не определено.
Если больше сигналов указанного вида не буферизировано в очереди, индикация о поступивших сигналах очищается.
Если сигналы, удовлетворяющие set, не поступили, sigtimedwait() выдерживает ожидание, но не более чем struct timespec. Часы CLOCK_MONOTONIC
используются для выдерживания задержки.
Если timeout равен нулю, и ни один из указанных сигналов не поступил, sigtimedwait() немедленно возвращается с ошибкой. Если timeout равен NULL
, вызов sigtimedwait() аналогичен sigwaitinfo().
Выбранный номер сигнала. Если возникла ошибка функция возвращает -1
, код ошибки записывается в errno.
POSIX 1003.1 Realtime Signals Extension
siginfo_t, pause(), pthread_sigmask(), sigaction(), SignalWaitinfo(), sigpending(), sigsuspend(), sigwaitinfo(), struct timespec
Предыдущий раздел: Описание API системной библиотеки