signal集程序一點疑問

只是作爲學習過程中記錄,建議不要參考

程序:

#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 是怎麼被賦值的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章