sigsuspend

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