NAME
sigsuspend - Atomically changes the set of blocked signals
and waits for a signal
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
#include <signal.h>
int sigsuspend (
sigset_t *signal_mask );
PARAMETERS
signal_mask
Points to a set of signals.
DESCRIPTION
The sigsuspend() function replaces the signal mask of the
process with the set of signals pointed to by the
signal_mask parameter, and then suspends execution of the
process until delivery of a signal whose action is either to
execute a signal-catching function or to terminate the pro-
cess. 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 indication of the error.
If delivery of a signal causes the process to terminate, the
sigsuspend() function does not return. If delivery of a sig-
nal causes a signal-catching function to execute, the sig-
suspend() function returns after the signal-catching func-
tion returns, with the signal mask restored to the set that
existed prior to the call to the sigsuspend() function.
The sigsuspend() function sets the signal mask and waits for
an unblocked signal as one atomic operation. This means that
signals cannot occur between the operations of setting the
mask and waiting for a signal. If a program invokes
sigprocmask(SIG_SETMASK) and sigpause() separately, a signal
that occurs between these functions might not be noticed by
sigpause().
In normal usage, a signal is blocked by using the
sigprocmask(SIG_BLOCK,...) function 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.
NOTES
The sigpause() function is provided for compatibility with
older UNIX systems; its function is a subset of the sig-
suspend() function.
AES Support Level: Full use
RETURN VALUES
If a signal is caught by the calling process and control is
returned from the signal handler, the calling process
resumes execution after the sigsuspend() function, which
always return a value of -1 and sets errno to [EINTR].
RELATED INFORMATION
Functions: pause(3), sigaction(2), sigblock(2),
sigprocmask(2), sigvec(2)
Acknowledgement and Disclaimer