Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474279
  • 博文数量: 120
  • 博客积分: 1853
  • 博客等级: 上尉
  • 技术积分: 1177
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-22 22:40
文章分类

全部博文(120)

文章存档

2013年(16)

2012年(104)

分类: LINUX

2012-05-11 15:56:02

对某个具体的信号如SIGINT其signal处理以最后一次使用的signal为准。无论sinal位于main还是在某个函数里面。

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <signal.h>

  3. static void fun1(int signo){
  4.     printf("fun1\n");
  5. }
  6. static void fun2(int signo){
  7.     printf("fun2\n");
  8. }

  9. void mask(void)
  10. {
  11.         sigset_t mak;
  12.         sigemptyset(&mak);
  13.         sigaddset(&mak, SIGINT);
  14.         sigprocmask(SIG_SETMASK, &mak, NULL);

  15.         signal(SIGQUIT, fun1);
  16. }
  17. int main(){
  18.         
  19.         
  20.     signal(SIGQUIT, fun2);
  21.     mask();

  22.     sigset_t now;
  23.     sigprocmask(0, NULL, &now);
  24.     if(sigismember(&now, SIGINT)){
  25.         printf("SIGINT IN\n");
  26.     }

  27.         
  28.     pause();
  29.     
  30.     return 0;
  31. }
输入^\则,输出为fun1。
阅读(1774) | 评论(0) | 转发(0) |
0

上一篇:signal (5)

下一篇:aupe习题10.2

给主人留下些什么吧!~~