SIGWAIT(3)

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.

Note: Code using the sigwait() function must be compiled and linked with the -pthread option to gcc(1).

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), pthreads(3)

STANDARDS
sigwait() conforms to p1003.1-96.