BSD_SIGNAL(3C) Standard C Library Functions BSD_SIGNAL(3C)
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
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 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() 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 the
BSD signal() 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 the
BSD signal().
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
sigaction(2),
sigaddset(3C),
sigemptyset(3C),
attributes(7),
standards(7) May 13, 2017
BSD_SIGNAL(3C)