Documentation
From my personal library, The Internet

man page:


     void (*
     bsd_signal(int sig, void (*func)(int)))(int);

     or in an equivalent but easier to read typedef'd version:

     typedef void (*sig_t) (int);

     sig_t
     bsd_signal(int sig, sig_t func);


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 the 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 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, 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(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

Man(1) output converted with man2html