SIGWAIT(3)                OpenBSD Programmer's Manual               SIGWAIT(3)

NAME
     sigwait - synchronously accept a signal

SYNOPSIS
     #include <signal.h>

     int
     sigwait(sont 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 sig-
     nal 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 re-
     ceived 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 ISO/IEC 9945-1 ANSI/IEEE (``POSIX'') Std
     1003.1c/D10.

OpenBSD 2.6                     August 20, 1998                              1
