| BSD_SIGNAL(3) | Library Functions Manual | BSD_SIGNAL(3) |
bsd_signal —
simplified signal facilities
#include
<signal.h>
void (*
bsd_signal(int
sig, void
(*func)(int)))(int);
or in an equivalent but easier to read typedef'd version:
typedef void (*sig_t) (int);
sig_t
bsd_signal(int
sig, sig_t
func);
The
bsd_signal()
function provides a partially compatible interface for programs written to
historical system interfaces (see USAGE below).
The function call
bsd_signal(sig,
func) has the effect as if implemented as:
void (*bsd_signal(int sig, void (*func)(int)))(int)
{
struct sigaction act, oact;
act.sa_handler = func;
act.sa_flags = SA_RESTART;
sigemptyset(&act.sa_mask);
sigaddset(&act.sa_mask, sig);
if (sigaction(sig, &act, &oact) == -1)
return(SIG_ERR);
return(oact.sa_handler);
}
The handler function should be declared:
func(int
sig)where sig is the signal number.
The behavior is undefined if
func() is a
function that takes more than one argument, or an argument of a different
type.
Upon successful completion, bsd_signal()
returns the previous action for sig. Otherwise,
SIG_ERR is returned and errno
is set to indicate the error.
Refer to sigaction(2).
This function is a direct replacement for the
BSD
signal(3) function for simple
applications that are installing a single-argument signal handler function.
If a BSD signal handler function is being installed
that expects more than one argument, the application has to be modified to
use sigaction(2). The
bsd_signal() function differs from
signal(3) in that the
SA_RESTART flag is set and the
SA_RESETHAND will be clear when
bsd_signal() is used. The state of these flags is
not specified for signal(3).
The bsd_signal() function conforms to
IEEE Std 1003.1-2001 (“POSIX.1”).
| December 20, 2003 | macOS 15.6 |