【问题标题】:Signal system call信号系统调用
【发布时间】:2014-09-10 01:45:49
【问题描述】:

我有这段代码 sn-p,我什至读过几次关于信号系统调用的信息,我仍然不明白为什么程序在我第四次按 CTRL-C 而不是第三次时停止。提前致谢!

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int i=0;

void handler(int sig)
{
    i++;
    printf("CTRL-C\n");
    if (i==3)
        signal(SIGINT, SIG_DFL);
}

int main()
{
    signal(SIGINT,handler);
    while (1)
    {
        printf("Hello world!\n");
        sleep(1);
    }

    return 0;
}

我读到信号系统调用不可移植,所以如果我提到我使用的是最新版本的 Ubuntu (14.04) 可能会有所帮助。

【问题讨论】:

    标签: c linux signals handler system-calls


    【解决方案1】:

    您的自定义处理程序被调用了 3 次。第三次,它注册一个新的信号处理程序(即默认的),它在下一次传递信号时终止程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 2017-05-07
      • 2013-05-24
      • 1970-01-01
      相关资源
      最近更新 更多