SIGNAL(3C)              Standard C Library Functions              SIGNAL(3C)
NAME
       signal, sigset, sighold, sigrelse, sigignore, sigpause - simplified
       signal management for application processes
SYNOPSIS
       #include <signal.h>       
void (
*signal(int sig, 
void (*disp)(int)))(int);       
void (*sigset(
int sig, 
void (*disp)(int)))(int);       
int sighold(
int sig);       
int sigrelse(
int sig);       
int sigignore(
int sig);       
int sigpause(
int sig);
DESCRIPTION
       These functions provide simplified signal management for application
       processes.  See 
signal.h(3HEAD) for an explanation of general signal
       concepts.
       The 
signal() and 
sigset() functions 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 
signal() is used, 
disp is the address of a signal
       handler, and 
sig is not  
SIGILL, SIGTRAP, or 
SIGPWR, the system first
       sets the signal's disposition to  
SIG_DFL before executing the signal
       handler. If 
sigset() is used and 
disp is the address of a signal
       handler, the system adds 
sig to the calling process's signal  mask
       before executing the signal handler; when the signal handler returns,
       the system restores the calling process's 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 is added to the calling process's
       signal mask and the signal's disposition remains unchanged.
       The 
sighold() function adds 
sig to the calling process's signal mask.
       The 
sigrelse() function removes 
sig from the calling process's signal
       mask.
       The 
sigignore() function sets the disposition of 
sig to 
SIG_IGN.       The 
sigpause() function removes 
sig from the calling process's signal
       mask  and suspends the calling process until a signal is received.
RETURN VALUES
       Upon successful completion, 
signal() returns the signal's previous
       disposition. Otherwise, it returns  
SIG_ERR and sets 
errno to
       indicate the error.
       Upon successful completion, 
sigset() returns 
SIG_HOLD if the signal
       had been blocked or the signal's previous disposition if it had not
       been blocked. Otherwise, it returns  
SIG_ERR and sets 
errno to
       indicate the error.
       Upon successful completion, 
sighold(), 
sigrelse(), 
sigignore(), and       
sigpause(), return  
0. Otherwise, they return  
-1 and set  
errno to
       indicate the error.
ERRORS
       These functions fail if:       
EINTR                 A signal was caught during the execution 
sigpause().       
EINVAL                 The value of the 
sig argument is not a valid signal or is
                 equal to 
SIGKILL or  
SIGSTOP.
USAGE
       The 
sighold() function used 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.
       If 
signal() or 
sigset() is used to set  
SIGCHLD's disposition to a
       signal handler, 
SIGCHLD will not be sent when the calling process's
       children are stopped or continued.
       If any of the above functions are used to set 
SIGCHLD's disposition
       to 
SIG_IGN, the calling process's child processes will not create
       zombie processes when they terminate (see 
exit(2)). If the calling
       process subsequently waits for its children, it blocks until all of
       its children terminate; it then returns 
-1 with 
errno set to 
ECHILD       (see 
wait(3C) and 
waitid(2)).
       The system guarantees that if more than one instance of the same
       signal is generated to a process, at least one signal will be
       received.  It does not guarantee the reception of every generated
       signal.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Standard        |
       +--------------------+-----------------+
       |MT-Level            | MT-Safe         |
       +--------------------+-----------------+
SEE ALSO
       exit(2), 
kill(2), 
pause(2), 
sigaction(2), 
sigsend(2), 
waitid(2),       
wait(3C), 
signal.h(3HEAD), 
attributes(7), 
standards(7)                              September 6, 2007                   SIGNAL(3C)