The Single UNIX ® Specification, Version 2
Copyright © 1997 The Open Group

 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().

 EXAMPLES

None.

 APPLICATION 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(). The bsd_signal() function differs from 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 signal().

 FUTURE DIRECTIONS

None.

 SEE ALSO

sigaction(), sigaddset(), sigemptyset(), signal(), <signal.h>.

UNIX ® is a registered Trademark of The Open Group.
Copyright © 1997 The Open Group
[ Main Index | XSH | XCU | XBD | XCURSES | XNS ]