Man Linux: Main Page and Category List

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  calling  process’  signal  mask  before
       executing  the  signal  handler;  when  the signal handler returns, the
       system shall restore the calling process’  signal  mask  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  calling
       process’  signal  mask 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 calling process’ signal mask.

       The  sighold()  function  shall  add sig to the calling process’ signal
       mask.

       The sigrelse() function shall remove  sig  from  the  calling  process’
       signal mask.

       The sigignore() function shall set the disposition of sig to SIG_IGN.

       The  sigpause()  function  shall  remove  sig from the calling process’
       signal mask and suspend the calling process until a signal is received.
       The  sigpause()  function shall restore the process’ signal mask 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
       sigaction() rather than sigset().

       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.

       The sigsuspend() function should be used in  preference  to  sigpause()
       for broader portability.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       Signal  Concepts  ,  exec()  ,  pause()  ,  sigaction()  ,  signal()  ,
       sigsuspend()  ,   waitid()   ,   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 .