一、源代码:
cat -n 10_12.c
1 #include <signal.h>
2 #include <errno.h>
3
4 #define SIGBAD(signo) ((signo) <= 0 || (signo) > NSIG)
5
6 int sigaddset(sigset_t *set,int signo)
7 {
8 if (SIGBAD(signo)){
9 errno = EINVAL;
10 return -1;
11 }
12
13 *set |= (1 << (signo - 1));
14 return 0;
15 }
16
17
18 int sigdelset(sigset_t *set,int signo)
19 {
20 if (BADSIG(signo)){
21 errno = EINVAL;
22 return -1;
23 }
24
25 *set &= ~(1 << (signo -1));
26 return 0;
27 }
28
29
30 int sigismember(sigset_t *set,int signo)
31 {
32 if (SIGBAD(signo)){
33 errno = EINVAL;
34 return -1;
35 }
36
37 return (*set & (1 << (signo - 1)) != 0);
38 }