]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/sigprocmask.2
sigpending.2: CONFORMING TO: add POSIX.1-2008
[thirdparty/man-pages.git] / man2 / sigprocmask.2
CommitLineData
7ff599e2 1.\" Copyright (c) 2005 Michael Kerrisk
c13182ef 2.\" based on earlier work by faith@cs.unc.edu and
7ff599e2
MK
3.\" Mike Battersby <mib@deakin.edu.au>
4.\"
93015253 5.\" %%%LICENSE_START(VERBATIM)
7ff599e2
MK
6.\" Permission is granted to make and distribute verbatim copies of this
7.\" manual provided the copyright notice and this permission notice are
8.\" preserved on all copies.
9.\"
10.\" Permission is granted to copy and distribute modified versions of this
11.\" manual under the conditions for verbatim copying, provided that the
12.\" entire resulting derived work is distributed under the terms of a
13.\" permission notice identical to this one.
c13182ef 14.\"
7ff599e2
MK
15.\" Since the Linux kernel and libraries are constantly changing, this
16.\" manual page may be incorrect or out-of-date. The author(s) assume no
17.\" responsibility for errors or omissions, or for damages resulting from
18.\" the use of the information contained herein. The author(s) may not
19.\" have taken the same level of care in the production of this manual,
20.\" which is licensed free of charge, as they might when working
21.\" professionally.
c13182ef 22.\"
7ff599e2
MK
23.\" Formatted or processed versions of this manual, if unaccompanied by
24.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 25.\" %%%LICENSE_END
7ff599e2
MK
26.\"
27.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
28.\"
5722c835 29.TH SIGPROCMASK 2 2015-07-23 "Linux" "Linux Programmer's Manual"
7ff599e2 30.SH NAME
166b65db 31sigprocmask, rt_sigprocmask \- examine and change blocked signals
7ff599e2
MK
32.SH SYNOPSIS
33.B #include <signal.h>
c13182ef 34.sp
7ff599e2
MK
35.BI "int sigprocmask(int " how ", const sigset_t *" set ,
36.BI "sigset_t *" oldset );
0f200f07
MK
37.sp
38.in -4n
39Feature Test Macro Requirements for glibc (see
40.BR feature_test_macros (7)):
41.in
42.sp
43.ad l
44.BR sigprocmask ():
45_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
46.ad b
7ff599e2
MK
47.SH DESCRIPTION
48.BR sigprocmask ()
92ae3965
MK
49is used to fetch and/or change the signal mask of the calling thread.
50The signal mask is the set of signals whose delivery is currently
51blocked for the caller
4c5bcd47
MK
52(see also
53.BR signal (7)
54for more details).
55
d9bfdb9c 56The behavior of the call is dependent on the value of
7ff599e2
MK
57.IR how ,
58as follows.
7ff599e2
MK
59.TP
60.B SIG_BLOCK
61The set of blocked signals is the union of the current set and the
62.I set
63argument.
64.TP
65.B SIG_UNBLOCK
66The signals in
67.I set
c13182ef 68are removed from the current set of blocked signals.
e935e108 69It is permissible to attempt to unblock a signal which is not blocked.
7ff599e2
MK
70.TP
71.B SIG_SETMASK
72The set of blocked signals is set to the argument
73.IR set .
7ff599e2
MK
74.PP
75If
76.I oldset
f38d8f71 77is non-NULL, the previous value of the signal mask is stored in
7ff599e2
MK
78.IR oldset .
79
80If
81.I set
82is NULL, then the signal mask is unchanged (i.e.,
83.I how
84is ignored),
85but the current value of the signal mask is nevertheless returned in
0daa9e92 86.I oldset
53e67125 87(if it is not NULL).
7ff599e2
MK
88
89The use of
90.BR sigprocmask ()
91is unspecified in a multithreaded process; see
92.BR pthread_sigmask (3).
47297adb 93.SH RETURN VALUE
7ff599e2
MK
94.BR sigprocmask ()
95returns 0 on success and \-1 on error.
2cbd0ac5
MK
96In the event of an error,
97.I errno
98is set to indicate the cause.
7ff599e2 99.SH ERRORS
ef301293
MF
100.TP
101.B EFAULT
57713dca 102The
ef301293
MF
103.I set
104or
105.I oldset
106argument points outside the process's allocated address space.
107.TP
7ff599e2
MK
108.B EINVAL
109The value specified in
110.I how
111was invalid.
47297adb 112.SH CONFORMING TO
2dd578fd 113POSIX.1-2001.
7ff599e2 114.SH NOTES
c13182ef 115It is not possible to block
7ff599e2
MK
116.BR SIGKILL " or " SIGSTOP .
117Attempts to do so are silently ignored.
eebf482d 118
92ae3965
MK
119Each of the threads in a process has its own signal mask.
120
eebf482d
MK
121A child created via
122.BR fork (2)
123inherits a copy of its parent's signal mask;
124the signal mask is preserved across
125.BR execve (2).
126
7ff599e2
MK
127If
128.BR SIGBUS ,
c13182ef 129.BR SIGFPE ,
7ff599e2
MK
130.BR SIGILL ,
131or
0daa9e92 132.B SIGSEGV
7ff599e2
MK
133are generated
134while they are blocked, the result is undefined,
736bedf6 135unless the signal was generated by
7ff599e2 136.BR kill (2),
485ab701 137.BR sigqueue (3),
7ff599e2
MK
138or
139.BR raise (3).
140.PP
141See
142.BR sigsetops (3)
143for details on manipulating signal sets.
166b65db 144.\"
0722a578 145.SS C library/kernel differences
3699b154
MK
146The glibc wrapper function for
147.BR sigprocmask ()
148silently ignores attempts to block the two real-time signals that
149are used internally by the NPTL threading implementation.
150See
151.BR nptl (7)
152for details.
153
166b65db
MK
154The original Linux system call was named
155.BR sigprocmask ().
156However, with the addition of real-time signals in Linux 2.2,
157the fixed-size, 32-bit
158.IR sigset_t
159type supported by that system call was no longer fit for purpose.
160Consequently, a new system call,
161.BR rt_sigprocmask (),
162was added to support an enlarged
163.IR sigset_t
164type.
165The new system call takes a fourth argument,
166.IR "size_t sigsetsize" ,
167which specifies the size in bytes of the signal sets in
168.IR set
169and
170.IR oldset .
171This argument is currently required to have the value
172.IR sizeof(sigset_t)
173(or the error
174.B EINVAL
175results).
176The glibc
177.BR sigprocmask ()
178wrapper function hides these details from us, transparently calling
179.BR rt_sigprocmask ()
180when the kernel provides it.
181.\"
47297adb 182.SH SEE ALSO
7ff599e2
MK
183.BR kill (2),
184.BR pause (2),
185.BR sigaction (2),
186.BR signal (2),
187.BR sigpending (2),
7ff599e2
MK
188.BR sigsuspend (2),
189.BR pthread_sigmask (3),
485ab701 190.BR sigqueue (3),
7ff599e2
MK
191.BR sigsetops (3),
192.BR signal (7)