sigprocmask(2) manual page
Table of Contents
sigprocmask - change and/or examine caller’s signal mask
#include
<signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oset);
Async-Signal-Safe
The sigprocmask() function is used
to examine and/or change the caller’s signal mask. If the value is SIG_BLOCK,
the set pointed to by the argument set is added to the current signal mask.
If the value is SIG_UNBLOCK, the set pointed by the argument set is removed
from the current signal mask. If the value is SIG_SETMASK, the current signal
mask is replaced by the set pointed to by the argument set. If the argument
oset is not NULL, the previous mask is stored in the space pointed to by
oset. If the value of the argument set is NULL, the value how is not significant
and the caller’s signal mask is unchanged; thus, the call can be used to
inquire about currently blocked signals.
If there are any pending unblocked
signals after the call to sigprocmask(), at least one of those signals
will be delivered before the call to sigprocmask() returns.
It is not possible
to block those signals that cannot be ignored (see sigaction(2)
); this
restriction is silently imposed by the system.
If sigprocmask() fails,
the caller’s signal mask is not changed.
On success, sigprocmask()
returns zero. On failure, it returns -1 and sets errno to indicate the error.
sigprocmask() fails if any of the following is true:
- EFAULT
- set
or oset points to an illegal address.
- EINVAL
- The value of the how argument
is not equal to one of the defined values.
sigaction(2)
, signal(3C)
,
sigsetops(3C)
, signal(5)
The language in the main body above should
indicate that in a multi-threaded program, the call to sigpromask() impacts
only the calling thread’s signal mask. Hence, it is identical to a call
to thr_sigsetmask(3t)
, in a multi-threaded program.
Table of Contents