当前位置:  技术问答>linux和unix

关于不可靠信号的问题,照抄书上的程序,结果却和它说得不一样

    来源: 互联网  发布时间:2016-04-18

    本文导语:  抄书上的代码 #include  void sigact(int sig) {  printf("kb interrupt signum is %dn",sig);  sleep(1);  printf("quitn"); } int main() {  signal(SIGINT,sigact); while(getchar()!='q') return 0; } 这是不可靠信号方式,signal不是永久安装的,应该第一...

抄书上的代码

#include 
void sigact(int sig)
{
 printf("kb interrupt signum is %dn",sig);
 sleep(1);
 printf("quitn");
}

int main()
{
 signal(SIGINT,sigact);
while(getchar()!='q')
return 0;
}

这是不可靠信号方式,signal不是永久安装的,应该第一次ctrl+c的时候,执行sigact函数的内容,第二次就会退出程序了。
可是在我这里特别顽强,按了六七次ctrl+c一直在执行sigact函数的内容。很奇怪,为什么不像不可靠信号的表现呢?应该捕获一次就按照默认动作执行了啊
请大虾解惑,谢谢


|
咋一个问题发了三次啊?

|
glibc2 对singal()采用的是BSD 的处理方式:不会调用一次就reset到默认行为;

具体你可以: man signal,然后主要看Portability一节:
Portability
       The original Unix signal() would reset the handler to SIG_DFL, and System V (and the Linux ker-
       nel and libc4,5) does the same.  On the other hand, BSD does not reset the handler, but  blocks
       new  instances  of this signal from occurring during a call of the handler.  The glibc2 library
       follows the BSD behavior.

       If one on a libc5 system includes  instead of  then signal()  is  rede-
       fined as __bsd_signal() and signal() has the BSD semantics.  This is not recommended.

       If one on a glibc2 system defines a feature test macro such as _XOPEN_SOURCE or uses a separate
       sysv_signal(3) function, one obtains classical behavior.  This is not recommended.

good luck!


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 对于多线程而言,errno是不是不可靠啊?有什么解决办法没?
  • 求教:在一台机器上多个进程之间使用udp通信是否可靠,谢谢
  • Web 应用可靠性测试 Gremlins.js
  • 在哪里下载infomix?请给个可靠的连接
  • #### 可靠ftp问题 ####
  • linux的可靠性真的可以?我不太认为
  • 硬盘数据恢复,ext3分区,又没有可靠的软件?
  • linux下tcp协议的socket可靠传输
  • 我都不想用lilo了,请大家推荐好用的多重引导,关键是要可靠
  • jQuery判断元素是否存在的可靠方法
  • 论坛 iis7站长之家
  • 各位请问哪里有免费可靠的支持JSP的空间,想找一个用来学习。(NULL)
  • asp.net 获取URL的可靠方法
  • Linux网络编程之基于UDP实现可靠的文件传输示例
  • 使用Python进行稳定可靠的文件操作详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3