NAME
sigsuspend - wait for a signal
SYNOPSIS
#include <signal.h>
I int sigsuspend(const sigset_t * mask );
DESCRIPTION
R sigsuspend ()
temporarily replaces the signal mask of the calling process with the
mask given by
mask
and then suspends the process until delivery of a signal whose
action is to invoke a signal handler or to terminate a process.
If the signal terminates the process, then
R sigsuspend ()
does not return.
If the signal is caught, then
R sigsuspend ()
returns after the signal handler returns,
and the signal mask is restored to the state before the call to
R sigsuspend ().
It is not possible to block
SIGKILL
or
R SIGSTOP ;
specifying these signals in
R mask ,
has no effect on the process's signal mask.
RETURN VALUE
R sigsuspend ()
always returns -1, normally with the error
R EINTR .
ERRORS
EFAULT
mask
points to memory which is not a valid part of the process address space.
EINTR
The call was interrupted by a signal.
CONFORMING TO
POSIX.1-2001.
NOTES
Normally,
R sigsuspend ()
is used in conjunction with
sigprocmask(2)
in order to prevent delivery of a signal during the execution of a
critical code section.
The caller first blocks the signals with
sigprocmask(2).
When the critical code has completed, the caller then waits for the
signals by calling
R sigsuspend ()
with the signal mask that was returned by
sigprocmask(2)
(in the
R oldset
argument).
See
sigsetops(3)
for details on manipulating signal sets.
SEE ALSO