Man Linux: Main Page and Category List

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

       The  function  call  bsd_signal(sig,  func)  shall be equivalent to the
       following:

              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 VALUE

       Upon successful completion,  bsd_signal()  shall  return  the  previous
       action for sig. Otherwise, SIG_ERR shall be returned and errno shall be
       set to indicate the error.

ERRORS

       Refer to sigaction() .

       The following sections are informative.

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 is clear when
       bsd_signal() is used. The state of these flags  is  not  specified  for
       signal().

       It is recommended that new applications use the sigaction() function.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       sigaction()  ,  sigaddset()  ,  sigemptyset()  ,  signal()  ,  the Base
       Definitions volume of IEEE Std 1003.1-2001, <signal.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .