代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
int main(int argc,char *argv[])
{
sigset_t set,pendmask,oldmask;
for(int i=0;i<atoi(argv[1]);i++)
printf("how are you?\n");
sigemptyset(&set);
sigaddset(&set,SIGINT);
if(sigprocmask(SIG_BLOCK,&set,&oldmask)==-1) {
printf("SIG_BLOCK error!\n");
exit(2); }
printf("SIG_BLOCK successfully\n");
sleep(5);
if(sigpending(&pendmask)<0) {
printf("sigpending error!\n");
exit(3); }
printf("sigpending successfully!\n");
if(sigismember(&pendmask,SIGINT))
printf("SIGINT pending\n");
alarm(5);
if(sigprocmask(SIG_SETMASK,&oldmask,NULL)==-1) {
printf("SIG_SETMASK error!\n");
exit(4); }
printf("SIG_SETMASK successfully!\n");
return 0;}
运行结果
图上的^C是检验SIGINT信号是否屏蔽。