![]() |
![]() |
![]() |
Wait for a signal or a timeout
#include <signal.h> int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout );
libc
The sigtimedwait() function selects a pending signal from set, atomically clears it from the set of pending signals in the process, and returns that signal number.
If info is NULL, the selected signal is returned by sigwaitinfo(); otherwise, the selected signal is stored in the si_signo member of info and the cause of the signal is stored in the si_code member.
If any value is queued to the selected signal, the first queued value is dequeued and, if the info argument is non-NULL, the value is stored in the si_value member of info. The system resources used to queue the signal are released and made available to queue other signals. If no value is queued, the content of the si_value member is undefined.
If no further signals are queued for the selected signal, the pending indication for that signal is reset.
If none of the signals specified by set are pending, sigtimedwait() waits for the time interval specified by the timespec structure timeout. If timeout is zero and if none of the signals specified by set are pending, then sigtimedwait() returns immediately with an error. If timeout is NULL, sigtimedwait() behaves the same as sigwaitinfo().
The selected signal number, or -1 if an error occurred (errno is set).
POSIX 1003.1 (Realtime Extensions)
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
pause(), pthread_sigmask(), sigaction(), SignalWaitinfo(), sigpending(), sigsuspend(), sigwaitinfo()
![]() |
![]() |
![]() |