sigprocmask()
is used to fetch and/or change the signal mask of the calling thread.
The signal mask is the set of signals whose delivery is currently
blocked for the caller
(see also
signal(7)
for more details).
The behavior of the call is dependent on the value of
how,
as follows.
SIG_BLOCK
The set of blocked signals is the union of the current set and the
set
argument.
SIG_UNBLOCK
The signals in
set
are removed from the current set of blocked signals.
It is permissible to attempt to unblock a signal which is not blocked.
SIG_SETMASK
The set of blocked signals is set to the argument
set.
If
oldset
is non-null, the previous value of the signal mask is stored in
oldset.
If
set
is NULL, then the signal mask is unchanged (i.e.,
how
is ignored),
but the current value of the signal mask is nevertheless returned in
oldset
(if it is not NULL).
The use of
sigprocmask()
is unspecified in a multithreaded process; see
pthread_sigmask(3).
RETURN VALUE
sigprocmask()
returns 0 on success and -1 on error.
ERRORS
EINVAL
The value specified in
how
was invalid.
CONFORMING TO
POSIX.1-2001.
NOTES
It is not possible to block
SIGKILL or SIGSTOP.
Attempts to do so are silently ignored.
Each of the threads in a process has its own signal mask.
A child created via
fork(2)
inherits a copy of its parent's signal mask;
the signal mask is preserved across
execve(2).
If
SIGBUS,
SIGFPE,
SIGILL,
or
SIGSEGV
are generated
while they are blocked, the result is undefined,
unless the signal was generated by the
kill(2),
sigqueue(2),
or
raise(3).
See
sigsetops(3)
for details on manipulating signal sets.
This page is part of release 3.14 of the Linux
man-pages
project.
A description of the project,
and information about reporting bugs,
can be found at
http://www.kernel.org/doc/man-pages/.