signal集程序一点疑问

本文详细介绍了sigprocmask函数的使用,并通过代码实例展示了如何利用sigset_tset来设置和检查信号集。重点讨论了SIGINT、SIGTSTP、SIGTERM信号的设置与屏蔽过程。

只是作为学习过程中记录,建议不要参考

程序:

#include <stdio.h>  
    #include <signal.h>  
    void checkset();  
      
    void main()  
    {  
         sigset_t blockset;  
         sigemptyset(&blockset);  
         sigaddset(&blockset,SIGINT);  
         sigaddset(&blockset,SIGTSTP);  
      
         checkset();  
      
         sigprocmask(SIG_SETMASK,&blockset,NULL);  
         checkset();  
      
         sigaddset(&blockset,SIGTERM);  
         sigprocmask(SIG_BLOCK,&blockset,NULL);  
         checkset();  
      
         sigdelset(&blockset,SIGTERM);  
         sigprocmask(SIG_UNBLOCK,&blockset,NULL);  
         checkset();  
    }  
      
    void checkset()  
    {  
      
         sigset_t set;  
         printf("checkset start:\n");  
      
         if(sigprocmask(0,NULL,&set)<0)  
         {  
         printf("checkset sigprocmask error!!\n");  
         exit(0);  
         }  
      
         if(sigismember(&set,SIGINT))  
         printf("sigint\n");  
         if(sigismember(&set,SIGTSTP))  
         printf("sigtstp\n");  
      
         if(sigismember(&set,SIGTERM))  
         printf("sigterm\n");  
          printf("checkset end\n");  
    } 
结果:

yuan@YUAN:~/program$ ./sigprocmask
checkset start:
checkset end
checkset start:
sigint
sigtstp
checkset end
checkset start:
sigint
sigtstp
sigterm
checkset end
checkset start:
sigterm
checkset end
yuan@YUAN:~/program$

不明白sigset_t set 是怎么被赋值的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值