Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       sigwait - wait for queued signals

SYNOPSIS

       #include <signal.h>

       int sigwait(const sigset_t *restrict set, int *restrict sig);

DESCRIPTION

       The  sigwait() function shall select a pending signal from set, atomically clear it from the system's set
       of pending signals, and return 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 implementation-defined
       whether upon successful return there are any remaining pending signals for that signal number.    If  the
       implementation  supports  queued  signals  and  there  are  multiple signals queued for the signal number
       selected, the first such queued signal shall cause a return from sigwait() and the remainder shall remain
       queued.  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 shall have been blocked at the time of the call to
       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, 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.

       Should any of the multiple pending signals in the range SIGRTMIN to SIGRTMAX be selected, it shall be the
       lowest numbered one. The selection order between realtime and non-realtime signals, or  between  multiple
       pending non-realtime signals, is unspecified.

RETURN VALUE

       Upon  successful  completion,  sigwait()  shall  store  the  signal  number of the received signal at the
       location referenced by sig and return zero. Otherwise, an error number shall be returned to indicate  the
       error.

ERRORS

       The sigwait() function may fail if:

       EINVAL The set argument contains an invalid or unsupported signal number.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       To  provide  a  convenient  way  for  a  thread to wait for a signal, this volume of IEEE Std 1003.1-2001
       provides the sigwait() function. For most cases where a thread has to wait for a  signal,  the  sigwait()
       function should be quite convenient, efficient, and adequate.

       However,  requests  were made for a lower-level primitive than sigwait() and for semaphores that could be
       used by threads.  After some consideration, threads were allowed to use  semaphores  and  sem_post()  was
       defined to be async-signal and async-cancel-safe.

       In  summary,  when it is necessary for code run in response to an asynchronous signal to notify a thread,
       sigwait() should be used to handle the signal. Alternatively, if the implementation provides  semaphores,
       they  also  can  be  used, either following sigwait() or from within a signal handling routine previously
       registered with sigaction().

FUTURE DIRECTIONS

       None.

SEE ALSO

       Signal Concepts , Realtime  Signals  ,  pause()  ,  pthread_sigmask()  ,  sigaction()  ,  sigpending()  ,
       sigsuspend() , sigwaitinfo() , the Base Definitions volume of IEEE Std 1003.1-2001, <signal.h>, <time.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard  for  Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers,
       Inc and The Open Group. In the event of any discrepancy between this version and the  original  IEEE  and
       The  Open  Group  Standard,  the  original  IEEE and The Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group                                   2003                                            SIGWAIT(P)