BSDSIGNAL(3) BSD Library Functions Manual BSDSIGNAL(3)
NAME
bsdsignal -- simplified signal facilities
SYNOPSIS
##include <>
void (*
bsdsignal(int sig, void (*func)(int)))(int);
or in an equivalent but easier to read typedef'd version:
typedef void (*sigt) (int);
sigt
bsdsignal(int sig, sigt func);
DESCRIPTION
The bsdsignal() function provides a partially compatible interface for
programs written to historical system interfaces (see USAGE below).
The function call bsdsignal(sig, func) has the effect as if implemented
as:
void (*bsdsignal(int sig, void (*func)(int)))(int)
{
struct sigaction act, oact;
act.sahandler = func;
act.saflags = SARESTART;
sigemptyset(&act.samask);
sigaddset(&act.samask, sig);
if (sigaction(sig, &act, &oact) == -1)
return(SIGER);
return(oact.sahandler);
}
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, bsdsignal() returns the previous action for
sig. Otherwise, SIGER is returned and errno is set to indicate the
error.
ERORS
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
sigaction(2). The bsdsignal() function differs from signal(3) in that
the SARESTART flag is set and the SARESETHAND will be clear when
bsdsignal() is used. The state of these flags is not specified for
signal(3).
SEE ALSO
sigaction(2), sigaddset(3), sigemptyset(3), signal(3)
STANDARDS
The bsdsignal() function conforms to IE Std 1003.1-2001 (``POSIX.1'').
BSD December 20, 2003 BSD
|