gpt4 book ai didi

c - 输入 Ctrl+C 时出现信号问题

转载 作者:太空狗 更新时间:2023-10-29 12:05:32 26 4
gpt4 key购买 nike

我是Linux编程的新手,我从一本书上复制了下面的代码:

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

void ouch (int sig)
{
printf("OUCH! - I got signal %d\n", sig);
(void) signal(SIGINT, SIG_DFL);
}

int main ()
{
(void) signal(SIGINT, ouch);

while(1)
{
printf("Hello World!\n");
sleep(1);
}

}

当输入 Ctrl+C 时,它应该打印一些东西。但它除了打印 Hello World! 什么也没做。


编辑:非常抱歉,我绑定(bind)了Ctrl+C作为复制的快捷键。很抱歉给您带来麻烦。

最佳答案

我的建议是不要在信号处理程序 (ouch) 中使用 printf,这可能是未定义的行为。异步信号安全函数:The list of safe functions that can be call in signal handler man page .

It is not safe to call all functions, such as printf, from within a signal handler. A useful technique is to use a signal handler to set a flag and then check that flag from the main program and print a message if required.

引用:Beginning Linux Programming, 4th Edition ,在这本书中,正是解释了您的代码,第 11 章:进程和信号,第 484 页

额外的有用链接:
说明:Use reentrant functions for safer signal handling

关于c - 输入 Ctrl+C 时出现信号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399767/

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