1BSD_SIGNAL(3) Linux Programmer's Manual BSD_SIGNAL(3)
2
3
4
6 bsd_signal - signal handling with BSD semantics
7
9 #define _XOPEN_SOURCE
10 #include <signal.h>
11
12 typedef void (*sighandler_t)(int);
13
14 sighandler_t bsd_signal(int signum, sighandler_t handler);
15
17 The bsd_signal() function takes the same arguments, and performs the
18 same task, as signal(2).
19
20 The difference between the two is that bsd_signal() is guaranteed to
21 provide reliable signal semantics, that is: a) the disposition of the
22 signal is not reset to the default when the handler is invoked; b)
23 delivery of further instances of the signal is blocked while the signal
24 handler is executing; and c) if the handler interrupts a blocking sys‐
25 tem call, then the system call is automatically restarted. A portable
26 application cannot rely on signal(2) to provide these guarantees.
27
29 The bsd_signal() function returns the previous value of the signal han‐
30 dler, or SIG_ERR on error.
31
33 As for signal(2).
34
36 4.2BSD, POSIX.1-2001. POSIX.1-2008 removes the specification of
37 bsd_signal(), recommending the use of sigaction(2) instead.
38
40 Use of bsd_signal() should be avoided; use sigaction(2) instead.
41
42 On modern Linux systems, bsd_signal() and signal(2) are equivalent.
43 But on older systems, signal(2) provided unreliable signal semantics;
44 see signal(2) for details.
45
46 The use of sighandler_t is a GNU extension; this type is only defined
47 if the _GNU_SOURCE feature test macro is defined.
48
50 sigaction(2), signal(2), sysv_signal(3), feature_test_macros(7), sig‐
51 nal(7)
52
54 This page is part of release 3.22 of the Linux man-pages project. A
55 description of the project, and information about reporting bugs, can
56 be found at http://www.kernel.org/doc/man-pages/.
57
58
59
60 2009-03-15 BSD_SIGNAL(3)