]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/sigvec.3
Removed trailing white space at end of lines
[thirdparty/man-pages.git] / man3 / sigvec.3
CommitLineData
9c2866d7 1'\" t
c11b1abf 2.\" Copyright (c) 2005 by Michael Kerrisk <mtk.manpages@gmail.com>
9c2866d7 3.\"
93015253 4.\" %%%LICENSE_START(VERBATIM)
9c2866d7
MK
5.\" Permission is granted to make and distribute verbatim copies of this
6.\" manual provided the copyright notice and this permission notice are
7.\" preserved on all copies.
8.\"
9.\" Permission is granted to copy and distribute modified versions of this
10.\" manual under the conditions for verbatim copying, provided that the
11.\" entire resulting derived work is distributed under the terms of a
12.\" permission notice identical to this one.
13.\"
14.\" Since the Linux kernel and libraries are constantly changing, this
15.\" manual page may be incorrect or out-of-date. The author(s) assume no
16.\" responsibility for errors or omissions, or for damages resulting from
10d76543
MK
17.\" the use of the information contained herein. The author(s) may not
18.\" have taken the same level of care in the production of this manual,
19.\" which is licensed free of charge, as they might when working
20.\" professionally.
9c2866d7
MK
21.\"
22.\" Formatted or processed versions of this manual, if unaccompanied by
23.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 24.\" %%%LICENSE_END
9c2866d7 25.\"
4b8c67d9 26.TH SIGVEC 3 2017-09-15 "Linux" "Linux Programmer's Manual"
9c2866d7
MK
27.SH NAME
28sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD signal API
29.SH SYNOPSIS
9c2866d7 30.B #include <signal.h>
68e4db0a 31.PP
7accd937 32.BI "int sigvec(int " sig ", const struct sigvec *" vec ", struct sigvec *" ovec );
68e4db0a 33.PP
9c2866d7 34.BI "int sigmask(int " signum );
68e4db0a 35.PP
9c2866d7 36.BI "int sigblock(int " mask );
68e4db0a 37.PP
9c2866d7 38.BI "int sigsetmask(int " mask );
68e4db0a 39.PP
9c2866d7 40.B int siggetmask(void);
68e4db0a 41.PP
cc4615cc
MK
42.in -4n
43Feature Test Macro Requirements for glibc (see
44.BR feature_test_macros (7)):
45.in
68e4db0a 46.PP
cfc2d88d 47All functions shown above:
51c612fb
MK
48 Since glibc 2.19:
49 _DEFAULT_SOURCE
50 Glibc 2.19 and earlier:
51 _BSD_SOURCE
9c2866d7
MK
52.SH DESCRIPTION
53These functions are provided in glibc as a compatibility interface
54for programs that make use of the historical BSD signal API.
c13182ef
MK
55This API is obsolete: new applications should use the POSIX signal API
56.RB ( sigaction (2),
9c2866d7 57.BR sigprocmask (2),
1bea464c 58etc.).
847e0d88 59.PP
9c2866d7
MK
60The
61.BR sigvec ()
62function sets and/or gets the disposition of the signal
c13182ef 63.I sig
9c2866d7
MK
64(like the POSIX
65.BR sigaction (2)).
c13182ef 66If
9c2866d7
MK
67.I vec
68is not NULL, it points to a
69.I sigvec
c13182ef 70structure that defines the new disposition for
9c2866d7
MK
71.IR sig .
72If
73.I ovec
c13182ef 74is not NULL, it points to a
9c2866d7
MK
75.I sigvec
76structure that is used to return the previous disposition of
77.IR sig .
c13182ef 78To obtain the current disposition of
9c2866d7
MK
79.I sig
80without changing it, specify NULL for
c13182ef 81.IR vec ,
b437fdd9 82and a non-null pointer for
9c2866d7 83.IR ovec .
847e0d88 84.PP
9c2866d7
MK
85The dispositions for
86.B SIGKILL
c13182ef 87and
9c2866d7
MK
88.B SIGSTOP
89cannot be changed.
847e0d88 90.PP
9c2866d7
MK
91The
92.I sigvec
93structure has the following form:
e646a1ba 94.PP
088a639b 95.in +4n
e646a1ba 96.EX
9c2866d7 97struct sigvec {
559a2b66
MK
98 void (*sv_handler)(int); /* Signal disposition */
99 int sv_mask; /* Signals to be blocked in handler */
100 int sv_flags; /* Flags */
9c2866d7 101};
e646a1ba 102.EE
d4f3dcff 103.in
e646a1ba 104.PP
9c2866d7
MK
105The
106.I sv_handler
107field specifies the disposition of the signal, and is either:
4eaa04c5 108the address of a signal handler function;
1bea464c 109.BR SIG_DFL ,
9c2866d7 110meaning the default disposition applies for the signal; or
1bea464c 111.BR SIG_IGN ,
9c2866d7 112meaning that the signal is ignored.
847e0d88 113.PP
9c2866d7
MK
114If
115.I sv_handler
116specifies the address of a signal handler, then
117.I sv_mask
c13182ef 118specifies a mask of signals that are to be blocked while
9c2866d7 119the handler is executing.
c13182ef 120In addition, the signal for which the handler is invoked is
e191c685 121also blocked.
9c2866d7
MK
122Attempts to block
123.B SIGKILL
c13182ef 124or
9c2866d7
MK
125.B SIGSTOP
126are silently ignored.
847e0d88 127.PP
9c2866d7
MK
128If
129.I sv_handler
130specifies the address of a signal handler, then the
131.I sv_flags
132field specifies flags controlling what happens when the handler is called.
133This field may contain zero or more of the following flags:
134.TP
135.B SV_INTERRUPT
136If the signal handler interrupts a blocking system call,
a23d8efa
MK
137then upon return from the handler the system call s not be restarted:
138instead it fails with the error
7b2b5ea4 139.BR EINTR .
c13182ef 140If this flag is not specified, then system calls are restarted
9c2866d7
MK
141by default.
142.TP
143.B SV_RESETHAND
c13182ef 144Reset the disposition of the signal to the default
9c2866d7
MK
145before calling the signal handler.
146If this flag is not specified, then the handler remains established
c13182ef 147until explicitly removed by a later call to
9c2866d7
MK
148.BR sigvec ()
149or until the process performs an
150.BR execve (2).
151.TP
152.B SV_ONSTACK
c13182ef
MK
153Handle the signal on the alternate signal stack
154(historically established under BSD using the obsolete
9c2866d7 155.BR sigstack ()
c13182ef 156function; the POSIX replacement is
fb186734 157.BR sigaltstack (2)).
9c2866d7 158.PP
c13182ef 159The
9c2866d7 160.BR sigmask ()
c1729f52 161macro constructs and returns a "signal mask" for
9c2866d7 162.IR signum .
d9bfdb9c 163For example, we can initialize the
c13182ef
MK
164.I vec.sv_mask
165field given to
9c2866d7
MK
166.BR sigvec ()
167using code such as the following:
207050fa
MK
168.PP
169.in +4n
170.EX
171vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT);
172 /* Block SIGQUIT and SIGABRT during
173 handler execution */
174.EE
175.in
9c2866d7
MK
176.PP
177The
178.BR sigblock ()
179function adds the signals in
180.I mask
181to the process's signal mask
c13182ef 182(like POSIX
9c2866d7
MK
183.IR sigprocmask(SIG_BLOCK) ),
184and returns the process's previous signal mask.
185Attempts to block
186.B SIGKILL
c13182ef 187or
9c2866d7
MK
188.B SIGSTOP
189are silently ignored.
190.PP
c13182ef 191The
9c2866d7
MK
192.BR sigsetmask ()
193function sets the process's signal mask to the value given in
c13182ef
MK
194.I mask
195(like POSIX
9c2866d7
MK
196.IR sigprocmask(SIG_SETMASK) ),
197and returns the process's previous signal mask.
198.PP
199The
200.BR siggetmask ()
201function returns the process's current signal mask.
202This call is equivalent to
203.IR sigblock(0) .
204.SH RETURN VALUE
c13182ef 205The
9c2866d7
MK
206.BR sigvec ()
207function returns 0 on success; on error, it returns \-1 and sets
c13182ef 208.I errno
9c2866d7 209to indicate the error.
847e0d88 210.PP
9c2866d7
MK
211The
212.BR sigblock ()
213and
214.BR sigsetmask ()
215functions return the previous signal mask.
847e0d88 216.PP
9c2866d7
MK
217The
218.BR sigmask ()
c1729f52 219macro returns the signal mask for
9c2866d7
MK
220.IR signum .
221.SH ERRORS
222See the ERRORS under
223.BR sigaction (2)
224and
225.BR sigprocmask (2).
84f6b067
MK
226.SH VERSIONS
227Starting with version 2.21, the GNU C library no longer exports the
228.BR sigvec ()
229function as part of the ABI.
230(To ensure backward compatibility,
231the glibc symbol versioning scheme continues to export the interface
232to binaries linked against older versions of the library.)
74fe2018 233.SH ATTRIBUTES
3c180819
PH
234For an explanation of the terms used in this section, see
235.BR attributes (7).
236.TS
237allbox;
238lbw32 lb lb
239l l l.
240Interface Attribute Value
241T{
74fe2018 242.BR sigvec (),
3c180819 243.BR sigmask (),
74fe2018
PH
244.BR sigblock (),
245.BR sigsetmask (),
74fe2018 246.BR siggetmask ()
3c180819
PH
247T} Thread safety MT-Safe
248.TE
47297adb 249.SH CONFORMING TO
2b2581ee
MK
250All of these functions were in
2514.3BSD, except
252.BR siggetmask (),
253whose origin is unclear.
254These functions are obsolete: do not use them in new programs.
9c2866d7
MK
255.SH NOTES
256On 4.3BSD, the
257.BR signal ()
c13182ef 258function provided reliable semantics (as when calling
9c2866d7
MK
259.BR sigvec ()
260with
261.I vec.sv_mask
262equal to 0).
263On System V,
264.BR signal ()
265provides unreliable semantics.
9041febd 266POSIX.1 leaves these aspects of
9c2866d7
MK
267.BR signal ()
268unspecified.
c13182ef 269See
9c2866d7
MK
270.BR signal (2)
271for further details.
847e0d88 272.PP
9c2866d7
MK
273In order to wait for a signal,
274BSD and System V both provided a function named
7a056410 275.BR sigpause (3),
9c2866d7
MK
276but this function has a different argument on the two systems.
277See
278.BR sigpause (3)
279for details.
47297adb 280.SH SEE ALSO
9c2866d7
MK
281.BR kill (2),
282.BR pause (2),
9c2866d7
MK
283.BR sigaction (2),
284.BR signal (2),
285.BR sigprocmask (2),
9fe51d8d 286.BR raise (3),
46c721e7
MK
287.BR sigpause (3),
288.BR sigset (3),
9c2866d7 289.BR signal (7)