SIGPROCMASK(2) SIGPROCMASK(2) NAME sigprocmask - alter and return previous state of the set of blocked signals (POSIX) SYNOPSIS #include <signal.h> int sigprocmask(int operation, sigset_t *set, sigset_t *oset); DESCRIPTION sigprocmask manipulates the set of signals which are blocked from delivery to the thread. A non-NULL set specifies the set of signals to use in modifying the currently-active set, and the incoming signals may be added to, deleted from, or completely replace the active set, as specified by the operation parameter, which may have the following values (as defined in <signal.h>): SIG_NOP Do not alter current signal mask SIG_BLOCK Add specified signals to those in current mask SIG_UNBLOCK Remove the specified signals from current mask SIG_SETMASK Replace current mask with incoming one If oset is not NULL, the current set of blocked signals (before modification) is returned in the space to which it points. In this way, with a NULL set and SIG_NOP operation the user can determine the current signal mask. Routines described in sigsetops(3) are used to create and examine the set and oset signal masks. It is not possible to block SIGKILL or SIGSTOP; this restriction is silently imposed by the system. POSIX specifies (contrary to BSD and System V) that a thread may block SIGCONT. However, a) SIGCONT always restarts the receiving thread (unless it is waiting for an event such as I/O), and b) if the receiving process has installed a handler for SIGCONT and blocked the signal, the thread will NOT enter its handler until it unblocks SIGCONT. (The signal will remain pending.) sigprocmask will fail if: [EFAULT] set or oset point to memory that is not a part of the process's valid address space. [EINVAL] Operation is not a valid set-operation (as described above: SIG_NOP, SIG_BLOCK, SIG_UNBLOCK, or SIG_SETMASK). SEE ALSO kill(2), sigaction(2), sigpending(2), sigsuspend(2), sigsetops(3). DIAGNOSTICS A 0 value indicates that the call succeeded. A -1 return value indicates that an error occurred and errno is set to indicate the reason. WARNING The POSIX and System V signal facilities have different semantics. Using both facilities in the same program is strongly discouraged and will result in unpredictable behavior. Page 2