HP-UX Reference (11i v1 05/09) - 2 System Calls (vol 5)

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 signal mask.
The sighold() function adds sig to the calling process signal mask.
The sigrelse() function removes sig from the calling process signal mask.
The sigignore() function sets the disposition of sig to SIG_IGN.
HP-UX 11i Version 1: September 2005 1 Hewlett-Packard Company Section 2369