Provided by: manpages-posix-dev_2013a-1_all bug

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()  functions  provide
       simplified signal management.

       The sigset() function shall modify signal dispositions. The  sig  argument  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 system
       shall add sig to the signal mask of  the  calling  process  before  executing  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  transformed  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 signal 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 portability, 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  functions  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  sigaction()  with  SIG_IGN
       set.  The  sigpause()  function is equivalent to sigsuspend().  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(),  sigaction(),  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 Electrical 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.kernel.org/doc/man-pages/reporting_bugs.html .