sighold(3p) - phpMan

SIGHOLD(3P)                POSIX Programmer's Manual               SIGHOLD(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
       sighold, sigignore, sigpause, sigrelse, sigset -- signal management
SYNOPSIS
       #include <signal.h>
       int sighold(int sig);
       int sigignore(int sig);
       int sigpause(int sig);
       int sigrelse(int sig);
       void (*sigset(int sig, void (*disp)(int)))(int);
DESCRIPTION
       Use of any of  these  functions  is  unspecified  in  a  multi-threaded
       process.
       The  sighold(), sigignore(), sigpause(), sigrelse(), and sigset() func-
       tions provide simplified signal management.
       The sigset() function shall modify signal dispositions. The  sig  argu-
       ment  specifies  the signal, which may be any signal except SIGKILL and
       SIGSTOP. The disp argument specifies the  signal's  disposition,  which
       may  be  SIG_DFL,  SIG_IGN,  or  the  address  of  a signal handler. If
       sigset() is used, and disp is the address of a signal handler, the sys-
       tem shall add sig to the signal mask of the calling process before exe-
       cuting the signal handler; when the signal handler returns, the  system
       shall restore the signal mask of the calling process to its state prior
       to the delivery of the signal. In addition, if sigset()  is  used,  and
       disp is equal to SIG_HOLD, sig shall be added to the signal mask of the
       calling process  and  sig's  disposition  shall  remain  unchanged.  If
       sigset()  is  used,  and  disp  is  not equal to SIG_HOLD, sig shall be
       removed from the signal mask of the calling process.
       The sighold() function shall add sig to the signal mask of the  calling
       process.
       The  sigrelse()  function  shall remove sig from the signal mask of the
       calling process.
       The sigignore() function shall set the disposition of sig to SIG_IGN.
       The sigpause() function shall remove sig from the signal  mask  of  the
       calling  process  and  suspend  the  calling  process until a signal is
       received. The sigpause() function shall restore the signal mask of  the
       process to its original state before returning.
       If the action for the SIGCHLD signal is set to SIG_IGN, child processes
       of the calling processes shall not be transformed into zombie processes
       when  they terminate. If the calling process subsequently waits for its
       children, and the process has no unwaited-for children that were trans-
       formed  into zombie processes, it shall block until all of its children
       terminate, and wait(), waitid(), and waitpid() shall fail and set errno
       to [ECHILD].
RETURN VALUE
       Upon  successful completion, sigset() shall return SIG_HOLD if the sig-
       nal had been blocked and the signal's previous disposition  if  it  had
       not been blocked. Otherwise, SIG_ERR shall be returned and errno set to
       indicate the error.
       The sigpause() function shall suspend execution of the thread  until  a
       signal  is  received,  whereupon  it  shall  return -1 and set errno to
       [EINTR].
       For all  other  functions,  upon  successful  completion,  0  shall  be
       returned.   Otherwise,  -1  shall be returned and errno set to indicate
       the error.
ERRORS
       These functions shall fail if:
       EINVAL The sig argument is an illegal signal number.
       The sigset() and sigignore() functions shall fail if:
       EINVAL An attempt is made to catch a signal that cannot be  caught,  or
              to ignore a signal that cannot be ignored.
       The following sections are informative.
EXAMPLES
       None.
APPLICATION USAGE
       The  sigaction()  function  provides  a more comprehensive and reliable
       mechanism for controlling signals;  new  applications  should  use  the
       sigaction() function instead of the obsolescent sigset() function.
       The  sighold()  function, in conjunction with sigrelse() or sigpause(),
       may be used to establish critical regions  of  code  that  require  the
       delivery  of a signal to be temporarily deferred. For broader portabil-
       ity, the pthread_sigmask() or sigprocmask() functions  should  be  used
       instead of the obsolescent sighold() and sigrelse() functions.
       For  broader  portability,  the  sigsuspend()  function  should be used
       instead of the obsolescent sigpause() function.
RATIONALE
       Each of these historic functions has a direct analog in the other func-
       tions  which  are required to be per-thread and thread-safe (aside from
       sigprocmask(), which is replaced by pthread_sigmask()).   The  sigset()
       function  can  be implemented as a simple wrapper for sigaction().  The
       sighold() function is equivalent to sigprocmask() or  pthread_sigmask()
       with  SIG_BLOCK  set.  The sigignore() function is equivalent to sigac-
       tion() with SIG_IGN set. The sigpause() function is equivalent to  sig-
       suspend().   The  sigrelse() function is equivalent to sigprocmask() or
       pthread_sigmask() with SIG_UNBLOCK set.
FUTURE DIRECTIONS
       These functions may be removed in a future version.
SEE ALSO
       Section 2.4, Signal Concepts, exec, pause(), pthread_sigmask(),  sigac-
       tion(), signal(), sigsuspend(), wait(), waitid()
       The Base Definitions volume of POSIX.1-2008, <signal.h>
COPYRIGHT
       Portions  of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
       --  Portable  Operating  System  Interface (POSIX), The Open Group Base
       Specifications Issue 7, Copyright (C) 2013 by the Institute of Electri-
       cal  and  Electronics  Engineers,  Inc  and  The  Open Group.  (This is
       POSIX.1-2008 with the 2013 Technical Corrigendum  1  applied.)  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.unix.org/online.html .
       Any typographical or formatting errors that appear  in  this  page  are
       most likely to have been introduced during the conversion of the source
       files to man page format. To report such errors,  see  https://www.ker-
       nel.org/doc/man-pages/reporting_bugs.html .
IEEE/The Open Group                  2013                          SIGHOLD(3P)