Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5705171
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2006-11-17 19:01:00

#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信号就可以了,因为信号屏蔽只是将信号加入到信号阻塞集合之中,并没有丢弃这个信号。一旦信号屏蔽取消了,这个信号就会 发生作用。

 
阅读(1030) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~