#include
#include
#include
int main(int argc,char **argv)
{
sigset_t intmask;
sigemptyset(&intmask);
sigaddset(&intmask,SIGINT);
sigprocmask(SIG_BLOCK,&intmask,NULL);
printf("SIGINT signal blocked!\n");
sleep(5);
sigprocmask(SIG_UNBLOCK,&intmask,NULL);
printf("SIGINT signal unblocked!\n");
sleep(3);
return 0;
}
我们在程序一开始的时候,按下CTRL+C的话,需要等待一段时间才可以中断。
程序在运行的时候我们要使用Ctrl+C来结束。如果我们在第一计算的时候发出SIGINT信号,由于信号已经屏蔽了,所以程序没有反映。只有到信号被取
消阻塞的时候程序才会结束。
注意我们只要发出一次SIGINT信号就可以了,因为信号屏蔽只是将信号加入到信号阻塞集合之中,并没有丢弃这个信号。一旦信号屏蔽取消了,这个信号就会
发生作用。
阅读(1069) | 评论(0) | 转发(0) |