HP-UX Reference (11i v1 00/12) - 2 System Calls (vol 5)

__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man2/!!!intro.2
________________________________________________________________
___ ___
s
signal(2) signal(2)
NAME
signal, sigset, sighold, sigrelse, sigignore, sigpause - signal management
SYNOPSIS
#include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);
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
The signal() function chooses one of three ways in which receipt of the signal number sig is to be subse-
quently handled. If the value of func is
SIG_DFL, default handling for that signal will occur. If the value
of func is
SIG_IGN, the signal will be ignored. Otherwise, func must point to a function to be called when
that signal occurs. Such a function is called a signal handler.
When a signal occurs, if func points to a function, first the equivalent of a:
signal(sig, SIG_DFL);
is executed or an implementation-dependent blocking of the signal is performed. (If the value of sig is
SIGILL, whether the reset to SIG_DFL occurs is implementation-dependent.) Next the equivalent of:
(*func)(sig);
is executed. The func function may terminate by executing a return statement or by calling abort(),
exit(),orlongjmp().Iffunc() executes a return statement and the value of sig was SIGFPE
or
any other implementation-dependent value corresponding to a computational exception, the behaviour is
undefined. Otherwise, the program will resume execution at the point it was interrupted.
If the signal occurs other than as the result of calling
abort(), kill() or raise(), the behaviour is
undefined if the signal handler calls any function in the standard library other than one of the functions
listed on the sigaction(2) page or refers to any object with static storage duration other than by assigning a
value to a static storage duration variable of type volatile sig_atomic_t. Furthermore, if such a call fails,
the value of
errno is indeterminate.
At program startup, the equivalent of:
signal(sig, SIG_IGN);
is executed for some signals, and the equivalent of:
signal(sig, SIG_DFL);
is executed for all other signals (see exec).
The sigset(), sighold(), sigignore() , sigpause() and segrelse() functions provide
simplified signal management.
The sigset() function is used to 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 will add sig to the calling process signal mask before executing
the signal handler; when the signal handler returns, the system will restore the calling process signal mask
to its state prior the delivery of the signal. In addition, if
sigset() is used, and disp is equal to
SIG_HOLD, sig will be added to the calling process’ signal mask and sig’s disposition will remain
unchanged. If sigset() is used, and disp is not equal to SIG_HOLD, sig will be removed from the cal-
ling process signalmask.
The sighold() function adds sig to the calling process’ signal mask.
The sigrelse() function removes sig from the calling process signalmask.
The sigignore() function sets the disposition of sig to SIG_IGN.
HP-UX Release 11i: December 2000 1 Section 2347
___
___