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);
DESCRIPTION
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:
void 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.
RETURN VALUES
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(2).
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
Man(1) output converted with
man2html
|