1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
'\" t
.\" Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH bsd_signal 3 2023-10-31 "Linux man-pages 6.7"
.SH NAME
bsd_signal \- signal handling with BSD semantics
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <signal.h>
.P
.B typedef void (*sighandler_t)(int);
.P
.BI "sighandler_t bsd_signal(int " signum ", sighandler_t " handler );
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR bsd_signal ():
.nf
Since glibc 2.26:
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
&& ! (_POSIX_C_SOURCE >= 200809L)
glibc 2.25 and earlier:
_XOPEN_SOURCE
.fi
.SH DESCRIPTION
The
.BR bsd_signal ()
function takes the same arguments, and performs the same task, as
.BR signal (2).
.P
The difference between the two is that
.BR bsd_signal ()
is guaranteed to provide reliable signal semantics, that is:
a) the disposition of the signal is not reset to the default
when the handler is invoked;
b) delivery of further instances of the signal is blocked while
the signal handler is executing; and
c) if the handler interrupts a blocking system call,
then the system call is automatically restarted.
A portable application cannot rely on
.BR signal (2)
to provide these guarantees.
.SH RETURN VALUE
The
.BR bsd_signal ()
function returns the previous value of the signal handler, or
.B SIG_ERR
on error.
.SH ERRORS
As for
.BR signal (2).
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
.na
.nh
.BR bsd_signal ()
T} Thread safety MT-Safe
.TE
.SH VERSIONS
Use of
.BR bsd_signal ()
should be avoided; use
.BR sigaction (2)
instead.
.P
On modern Linux systems,
.BR bsd_signal ()
and
.BR signal (2)
are equivalent.
But on older systems,
.BR signal (2)
provided unreliable signal semantics; see
.BR signal (2)
for details.
.P
The use of
.I sighandler_t
is a GNU extension;
this type is defined only if the
.B _GNU_SOURCE
feature test macro is defined.
.SH STANDARDS
None.
.SH HISTORY
4.2BSD, POSIX.1-2001.
Removed in POSIX.1-2008,
recommending the use of
.BR sigaction (2)
instead.
.SH SEE ALSO
.BR sigaction (2),
.BR signal (2),
.BR sysv_signal (3),
.BR signal (7)
|