We need a data
type to represent multiple signalsa signal set. We'll use this with such
functions as sigprocmask (in the next section) to tell the kernel not to allow
any of the signals in the set to occur. As we mentioned earlier, the number of
different signals can exceed the number of bits in an integer, so in general,
we can't use an integer to represent the set with one bit per signal. POSIX.1
defines the data type sigset_t to contain a signal set and the following five
functions to manipulate signal sets.
#include
<signal.h>
int
sigemptyset(sigset_t *set);
int
sigfillset(sigset_t *set);
int
sigaddset(sigset_t *set, int signo);
int
sigdelset(sigset_t *set, int signo);
/*
* All four return:
0 if OK, 1 on error
*/
int
sigismember(const sigset_t *set, int signo);
/*
* Returns: 1 if
true, 0 if false, 1 on error
*/
The function sigemptyset
initializes the signal set pointed to by set so that all signals are excluded. The
function sigfillset initializes the signal set so that all signals are
included. All applications have to call either sigemptyset or sigfillset once
for each signal set, before using the signal set, because we cannot assume that
the C initialization for external and static variables (0) corresponds to the implementation
of signal sets on a given system.
Once we have
initialized a signal set, we can add and delete specific signals in the set.
The function sigaddset adds a single signal to an existing set, and sigdelset removes
a single signal from a set. In all the functions that take a signal set as an
argument, we always pass the address of the signal set as the argument.
See Also
No comments:
Post a Comment