NAME
bsd_signal —
simplified signal facilities
SYNOPSIS
#include <signal.h> void (*bsd_signal(int sig, void (*func)(int)))(int);
DESCRIPTION
The bsd_signal() function provides a partially compatible interface for programs written to historical system interfaces (see APPLICATION USAGE below).
The function call bsd_signal (
sig, func) has an 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: void handler(int sig); where
sig is the signal number. The behaviour is undefined if
func is a function that takes more than one argument, or
an argument of a different type.
RETURN VALUE
Upon successful completion, bsd_signal() returns the previous action for sig . Otherwise, SIG_ERR is returned and errno is set to indicate the error.
ERRORS
Refer to sigaction(3) .
EXAMPLES
None.
APPLICATION USAGE
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(3) . 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) .
FUTURE DIRECTIONS
None.
SEE ALSO
sigaction(3) , sigaddset(3) , sigemptyset(3) , signal(3) , <signal.h> .