bsd_signal(3C)


bsd_signal -- simplified signal facilities

Synopsis

   cc -lc ...
   

#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 func function must take exactly one argument and must return a value of type void.

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

See sigaction(2).

Usage

This function is a direct replacement for the BSD signal(3bsd) 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).

Backwards comaptibility

The bsd_signal function differs from signal in that the SA_RESTART flag is set and the SA_RESETHAND wil be clear when bsd_signal is used. The state of these flags is not specified for signal.

References

sigaction(2), signal(2), sigaddset(3C), sigemptyset(3C), signal(3bsd), signal 5
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004