#include <signal.h>
void (*bsd_signal(int sig, void (*func)(int)))(int);
The bsd_signal() function provides a partially compatible interface for programs written to historical system interfaces (see APPLICATION USAGE).
The function call bsd_signal(sig, func) shall be equivalent to the following:
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 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() shall return the previous action for sig. Otherwise, SIG_ERR shall be returned and errno shall be set to indicate the error.
Refer to sigaction() .
The following sections are informative.
This function is a direct replacement for the BSD signal() 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(). The bsd_signal() function differs from signal() in that the SA_RESTART flag is set and the SA_RESETHAND is clear when bsd_signal() is used. The state of these flags is not specified for signal().
It is recommended that new applications use the sigaction() function.
sigaction() , sigaddset() , sigemptyset() , signal() , the Base Definitions volume of IEEE Std 1003.1-2001, <signal.h>