sigsuspend(2)sigsuspend(2)NAMEsigsuspend - Atomically change the set of blocked signals and wait for
const sigset_t *signal_mask );
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
sigsuspend(): XSH4.0, XSH4.2, XSH5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
Points to a set of signals.
The sigsuspend() function replaces the signal mask of the process (or
thread) with the set of signals pointed to by the signal_mask parame‐
ter, and then suspends execution of the caller until delivery of a sig‐
nal whose action is either to execute a signal-catching function or to
terminate the process. The sigsuspend() function does not allow the
SIGKILL or SIGSTOP signals to be blocked. If a program attempts to
block one of these signals, the sigsuspend() function gives no indica‐
tion of the error; the illegal request is simply ignored.
If delivery of a signal causes the process to terminate, the sigsus‐
pend() function does not return. If delivery of a signal causes a sig‐
nal-catching function to execute, the sigsuspend() function returns
after the signal-catching function returns, with the signal mask
restored to the set that existed prior to the call to the sigsuspend()
The sigsuspend() function sets the signal mask and waits for an
unblocked signal as one atomic operation. This means that signals can‐
not occur between the operations of setting the mask and waiting for a
signal. If a program uses the sigprocmask(SIG_SETMASK) and sigpause()
calls separately, a signal that occurs between these calls might not be
noticed by sigpause(). (The sigpause() function provides a compatibil‐
ity interface to the sigsuspend() function.)
In normal usage, a signal is blocked by using the sigproc‐
mask(SIG_BLOCK,...) or pthread_sigmask(...) call at the beginning of
a critical section. The process then determines whether there is work
for it to do. If no work is to be done, the process waits for work by
calling the sigsuspend() function with the mask previously returned by
the sigprocmask() function.
Since the sigsuspend() function suspends process execution indefi‐
nitely, there is no successful completion return value. If a return
occurs, -1 is returned and errno is set to indicate the error.
The sigsuspend() function sets errno to the value specified for the
following conditions: A signal is caught by the calling process and
control is returned from the signal-catching function.
Functions: sigaction(2), sigblock(2), sigprocmask(2), sigvec(2),