xref: /freebsd/lib/libc/compat-43/sigpause.2 (revision 7aa383846770374466b1dcb2cefd71bde9acf463)
1.\" Copyright (c) 1983, 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 4. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"     @(#)sigpause.2	8.1 (Berkeley) 6/2/93
29.\" $FreeBSD$
30.\"
31.\" Part of the content of the man page was derived from
32.\" The Open Group Base Specifications Issue 7
33.\" IEEE Std 1003.1-2008
34.\"
35.Dd June 2, 1993
36.Dt SIGPAUSE 2
37.Os
38.Sh NAME
39.Nm sighold ,
40.Nm sigignore ,
41.Nm sigpause ,
42.Nm sigrelse ,
43.Nm sigset
44.Nd legacy interface for signal management
45.Sh LIBRARY
46.Lb libc
47.Sh SYNOPSIS
48.In signal.h
49.Ft int
50.Fn sighold "int sig"
51.Ft int
52.Fn sigignore "int sig"
53.Ft int
54.Fn xsi_sigpause "int sigmask"
55.Ft int
56.Fn sigrelse "int sig"
57.Ft void (*)(int)
58.Fn sigset "int" "void (*disp)(int)"
59.Ft int
60.Fn sigpause "int sigmask"
61.Sh DESCRIPTION
62.Sy This interface is made obsolete by
63.Xr sigsuspend 2
64.Sy and
65.Xr sigaction 2
66.Pp
67The
68.Fn sigset
69function modifies signal dispositions.
70The
71.Fa sig
72argument specifies the signal, which may be any signal except
73.Dv SIGKILL
74and
75.Dv SIGSTOP .
76The
77.Fa disp
78argument specifies the signal's disposition,
79which may be
80.Dv SIG_DFL ,
81.Dv SIG_IGN ,
82or the address of a signal handler.
83If
84.Fn sigset
85is used, and
86.Fa disp
87is the address of a signal handler, the
88system adds
89.Fa sig
90to the signal mask of the calling process before executing the signal
91handler; when the signal handler returns, the system restores the
92signal mask of the calling process to its state prior to the delivery
93of the signal.
94In addition, if
95.Fn sigset
96is used, and
97.Fa disp
98is equal to
99.Dv SIG_HOLD ,
100.Fa sig
101is added to the signal
102mask of the calling process and
103.Fa sig 's
104disposition remains unchanged.
105If
106.Fn sigset
107is used, and
108.Fa disp
109is not equal to
110.Dv SIG_HOLD ,
111.Fa sig
112is removed from the signal mask of the calling process.
113.Pp
114The
115.Fn sighold
116function adds
117.Fa sig
118to the signal mask of the calling process.
119.Pp
120The
121.Fn sigrelse
122function removes
123.Fa sig
124from the signal mask of the calling process.
125.Pp
126The
127.Fn sigignore
128function sets the disposition of
129.Fa sig
130to
131.Dv SIG_IGN .
132.Pp
133The
134.Fn xsi_sigpause
135function removes
136.Fa sig
137from the signal mask of the calling process and suspend the calling process
138until a signal is received.
139The
140.Fn xsi_sigpause
141function restores the signal mask of the process to its original state before
142returning.
143.Pp
144The
145.Fn sigpause
146function
147assigns
148.Fa sigmask
149to the set of masked signals
150and then waits for a signal to arrive;
151on return the set of masked signals is restored.
152The
153.Fa sigmask
154argument
155is usually 0 to indicate that no
156signals are to be blocked.
157.Sh RETURN VALUES
158The
159.Fn sigpause
160and
161.Fn xsi_sigpause
162functions
163always terminate by being interrupted, returning -1 with
164.Va errno
165set to
166.Er EINTR .
167.Pp
168Upon successful completion,
169.Fn sigset
170returns
171.Dv SIG_HOLD
172if the signal had been blocked and the signal's previous disposition if
173it had not been blocked.
174Otherwise,
175.Dv SIG_ERR is returned and
176.Va errno
177set to indicate the error.
178.Pp
179For all other functions, upon successful completion, 0 is returned.
180Otherwise, -1 is returned and
181.Va errno
182is set to indicate the error:
183.Bl -tag -width Er
184.It Bq Er EINVAL
185The
186.Fa sig
187argument
188is not a valid signal number.
189.It Bq Er EINVAL
190For
191.Fn sigset
192and
193.Fn sigignore
194functions, an attempt was made to catch or ignore
195.Dv SIGKILL
196or
197.Dv SIGSTOP .
198.El
199.Sh SEE ALSO
200.Xr kill 2 ,
201.Xr sigaction 2 ,
202.Xr sigblock 2 ,
203.Xr sigprocmask 2 ,
204.Xr sigsuspend 2 ,
205.Xr sigvec 2
206.Sh STANDARDS
207The
208.Fn sigpause
209function is implemented for compatibility with historic
210.Bx 4.3
211applications.
212An incompatible interface by the same name, which used a single signal number
213rather than a mask, was present in
214.At V ,
215and was copied from there into the
216.Sy X/Open System Interfaces
217.Pq Tn XSI
218option of
219.St -p1003.1-2001 .
220.Fx
221implements it under the name
222.Fn xsi_sigpause .
223The
224.Fn sighold ,
225.Fn sigignore ,
226.Fn sigrelse
227and
228.Fn sigset
229functions are implemented for compatibility with
230.Sy System V
231and
232.Sy XSI
233interfaces.
234.Sh HISTORY
235The
236.Fn sigpause
237function appeared in
238.Bx 4.2
239and has been deprecated.
240All other functions appeared in
241.Fx 8.1
242and were deprecated before being implemented.
243