只是作爲學習過程中記錄,建議不要參考
程序:
#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 是怎麼被賦值的