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 inter-
     faces (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  previ-
     ous 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(3UCB)  function for simple applications that are ins-
     talling 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 signal
     (3UCB)  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(3UCB).


SEE ALSO

     sigaction(2), sigaddset(3C), sigemptyset(3C), signal(3UCB)


Man(1) output converted with man2html