免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2556 | 回复: 8
打印 上一主题 下一主题

UNIX中信号中断再触发 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-04 22:46 |只看该作者 |倒序浏览
10可用积分
在UNIX环境中,使用sigaction设置信号处理函数,若本函数无法处理,怎么才能使信号触发,调用缺省的信号处理函数

论坛徽章:
0
2 [报告]
发表于 2007-07-04 22:50 |只看该作者
注销掉自己+kill?

不过我觉得没有必要,你既然捕获了想怎么处理都可以阿。
自杀都没问题~~:wink:

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2007-07-04 23:16 |只看该作者
什么情况下你无法处理?

论坛徽章:
0
4 [报告]
发表于 2007-07-04 23:18 |只看该作者
一般来说不存在这样的问题.

论坛徽章:
0
5 [报告]
发表于 2007-07-05 08:48 |只看该作者
信号处理函数内
first: use sigaction to register SIG_DFL as handle of the given signal;
second: raise(signo);

???

论坛徽章:
0
6 [报告]
发表于 2007-07-05 08:51 |只看该作者


  1. #include ........

  2. void hand(int sig)
  3. {
  4.     printf("i can't process sig %d\n", sig);
  5.     signal(sig, SIG_DFL);
  6.     kill(getpid(), sig);
  7. }

  8. main()
  9. {
  10.     signal(SIGINT, hand);
  11.     for(;;);
  12. }


复制代码


就可以

论坛徽章:
0
7 [报告]
发表于 2007-07-05 08:55 |只看该作者
还是用sigaction吧,要不这么做,会有抖动。
不过signal作为一个算法说明和参考,已经够了吧

论坛徽章:
0
8 [报告]
发表于 2007-07-05 22:15 |只看该作者

对不起,没有将问题讲清楚



  1. struct sigaction gSavSa;

  2. void sighadle()
  3. {
  4.      if(是某区域内存)
  5.      {
  6.             // 进行处理
  7.      }
  8.      else
  9.      {
  10.          sigaction(SIGSEGV,&gSavSa,NULL);
  11.          // ??此后进程会产生core吗?会丢失一次SIGSEGV吗?
  12.      }
  13. }

  14. void main(void)
  15. {
  16.      ....
  17.            sigaction(SIGSEGV,&sa,&gSavSa);
  18.      ......
  19. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2007-07-05 22:47 |只看该作者
信号被你截获了,自然没了。缺省的信号处理也没什么啊(大部分都导致中止了~~),lz干什么非要缺省的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP