gpt4 book ai didi

c - 信号系统调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:18 26 4
gpt4 key购买 nike

我有这段代码,我什至读过几次有关信号系统调用的内容,但我仍然不明白为什么程序会在我第四次按 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 - 信号系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com