NAME
sigwait
—
synchronously accept a
signal
SYNOPSIS
#include
<signal.h>
int
sigwait
(const
sigset_t *set, int
*sig);
DESCRIPTION
The
sigwait
()
function selects a pending signal from set, atomically
clears it from the system's set of pending signals, and returns that signal
number in the location referenced by sig. If prior to
the call to sigwait
() there are multiple pending
instances of a single signal number, it is undefined whether upon successful
return there are any remaining pending signals for that signal number. If no
signal in set is pending at the time of the call, the
thread shall be suspended until one or more becomes pending. The signals
defined by set should have been blocked at the time of
the call to sigwait
(); otherwise the behaviour 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, no more than one of these threads shall return
from sigwait
() with the signal number. Which thread
returns from sigwait
() if more than a single thread
is waiting is unspecified.
RETURN VALUES
Upon successful completion, sigwait
()
stores the signal number of the received signal at the location referenced
by sig and returns zero.
ERRORS
On error, sigwait
() returns one of these
error values:
- [
EINVAL
] - The set argument contains an invalid or unsupported signal number.
SEE ALSO
sigaction(2), sigpending(2), sigsuspend(2), pause(3), pthread_sigmask(3)
STANDARDS
sigwait
() conforms to
ISO/IEC 9945-1:1996 (“POSIX.1”).