bsd_signal(3p) - phpMan

BSD_SIGNAL(3P)             POSIX Programmer's Manual            BSD_SIGNAL(3P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the  corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.
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 fol-
       lowing:

              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 differ-
       ent 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  han-
       dler 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 .

IEEE/The Open Group                  2003                       BSD_SIGNAL(3P)