其實現方式很簡單,就是用sigismember函數與每個信號進行比較。
一、源代碼:
:cat -n 10_14.c
1 #include "apue.h"
2 #include <errno.h>
3
4 void pr_mask(const char *str)
5 {
6 int saved_errno;
7 sigset_t sigset;
8
9 saved_errno = errno;
10 if (sigpromask(0,NULL,&setset) < 0){
11 err_ret("sigpromask error");
12 }
13 else{
14 printf("%s",str);
15 if(sigismemebr(&sigset,SIGINT))
16 printf(" SIGINT");
17 if(sigismember(&sigset,SIGQUIT))
18 printf(" SIGQUIT");
19 if(sigismember(&sigset,SIGUSR1))
20 printf(" SIGALRM");
21
22
23 printf("\n");
24 }
25 errno = saved_errno;
26 }
注意保存errno的值。