1 /*
2 设置信号集并打印
3 修改阻塞信号集
4 打印未决信号集
5 */
6 #include<stdio.h>
7 #include<signal.h>
8 #include<unistd.h>
9 void print(sigset_t *ped)
10 {
11 int i;
12 for(i=1;i<32;i++){
13 if(sigismember(ped,i)==1){//判断某个信号是否在信号集中
14 putchar('1');//打印int类型变量
15 }else
16 printf("0");
17 }
18 printf("\n");
19 }
20 void main(void)
21 {
22 sigset_t set,ped;//定义我的信号集,接收未决信号集合的集合
23 sigemptyset(&set);//初始化我的信号集
24 sigaddset(&set,SIGINT);//将信号集中的SIGSTOP设置为1
25 sigprocmask(SIG_BLOCK,&set,NULL);//将set中为1的添加进阻塞信号集
26
27 while(1){
28 sigpending(&ped);//将未决信号集读到ped集中
29 print(&ped);
30 sleep(1);
31 }
32 }
33 //进程一开始时,未决信号集全为0,当接收的信号为阻塞信号时未决信号集中对应的位立即翻转为1