HP-UX Reference (11i v1 05/09) - 3 Library Functions N-Z (vol 7)
s
sigset(3C) sigset(3C)
NAME
sigset(), sighold(), sigrelse(), sigignore(), sigpause() - signal management
SYNOPSIS
#include <signal.h>
void (*sigset(int sig, void (*func)(int)))(int);
int sighold(int sig);
int sigrelse(int sig);
int sigignore(int sig);
int sigpause(int sig);
DESCRIPTION
The system defines a set of signals that can be delivered to a process. The set of signals is defined in sig-
nal(5), along with the meaning and side effects of each signal. An alternate mechanism for handling these
signals is defined here. The facilities described here should not be used in conjunction with the other facili-
ties described under signal(2), sigvector(2), sigblock(2), sigsetmask(2), sigpause(3C) and sigspace(2).
sigset() allows the calling process to choose one of four ways to handle the receipt of a specific signal.
sig specifies the signal and func specifies the choice.
sig can be any one of the signals described under signal(5) except SIGKILL or SIGSTOP
.
func is assigned one of four values:
SIG_DFL, SIG_IGN, SIG_HOLD,orafunction address. The actions
prescribed by
SIG_DFL and SIG_IGN are described under signal(5). The action prescribed by
SIG_HOLD and function address are described below:
SIG_HOLD Hold signal.
The signal sig is held upon receipt. Any pending signal of this signal type remains held.
Only one signal of each type is held.
NOTE: the signals SIGKILL, SIGCONT, and SIGSTOP cannot be held.
function address
Catch signal.
func must be a pointer to a function, the signal-catching handler, that is called when signal
sig occurs. sigset() specifies that the process calls this function upon receipt of signal
sig. Any pending signal of this type is released. This handler address is retained across
calls to the other signal management functions listed here. Upon receipt of signal sig, the
receiving process executes the signal-catching function pointed to by func as described
under signal(5) with the following differences:
Before calling the signal-catching handler, the system signal action of sig is set to
SIG_HOLD. During a normal return from the signal-catching handler, the system signal
action is restored to func and any held signal of this type is released. If a non-local goto
(longjmp(3C)) is taken, sigrelse() must be called to restore the system signal action to
func and release any held signal of this type.
sighold() holds the signal sig. sigrelse() restores the system signal action of sig to that specified
previously by sigset(). sighold() and sigrelse() are used to establish critical regions of code.
sighold() is analogous to raising the priority level and deferring or holding a signal until the priority is
lowered by sigrelse() .
sigignore() sets the action for signal sig to SIG_IGN (see signal(5)).
sigpause() suspends the calling process until it receives an unblocked signal. If the signal sig is held, it
is released before the process pauses. sigpause() is useful for testing variables that are changed when
a signal occurs. For example, sighold() should be used to block the signal first, then test the variables.
If they have not changed, call sigpause() to wait for the signal.
RETURN VALUE
Upon successful completion, sigset() returns the previous value of the system signal action for the
specified signal sig. Otherwise, a value of SIG_ERR is returned and errno is set to indicate the error.
SIG_ERR is defined in <signal.h>.
Section 3−−892 Hewlett-Packard Company − 1 − HP-UX 11i Version 1: September 2005