Wait for a pending signal
#include <signal.h> int sigwait( const sigset_t *set, int *sig );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The sigwait() function selects a pending signal from set, atomically clears it from the set of pending signals in the system, and returns that signal number in sig. If there are multiple signals queued for the signal number selected, the first signal causes a return from sigwait() and the rest remain queued. If no signal in set is pending at the time of the call, the thread is suspended until one or more becomes pending.
The signals defined by set must be blocked before you call sigwait(); otherwise, the behavior is undefined. The effect of sigwait() on the signal actions for the signals in set is unspecified.
If more than one thread is using sigwait() to wait for the same signal, only one of the threads returns from sigwait() with the signal number — which one is unspecified.
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |