c - sleep 功能会在收到信号时中止吗?

标签 c sleep signals

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

void ints(int i )
{
   printf("ints \n");
}


int main(void)
{
    signal(SIGINT, ints);
   sleep(10);  
}

输入 Ctrl+C ,程序将立即终止并输出:

^ints

我想知道为什么在我看来,无论输入多少次 Ctrl+C,程序都应该在 10 秒后终止。

最佳答案

sleep() 是那些在中断时永远不会重新启动的函数之一。

有趣的是,它也不会像人们预期的那样返回 EINT。

它会返回成功以及剩余的 sleep 时间。

参见: http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html 其他中断不重启的API详情

关于c - sleep 功能会在收到信号时中止吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661419/

相关文章:

mysql - 如何设置 Netbeans 以使用 C 语言进行 MySQL 编程

Java 线程 - CPU 使用率

c++ - 在 C++ 中,当被 ctrl-c 中断时,在死亡之前调用带有参数(信号编号除外)的函数

c - 在C中使用fread读回数据后出现错误值

c# - 如何将这些 DCB 结构设置从 C 映射到 C# SerialPort 类

java - 如何堆叠传入数据

c++ - 使用匿名或 lambda 函数连接到 Boost Signals2 信号

python - 如何检查子进程是否在Windows上被信号杀死

c - matlab,我如何从多个文件夹中读取

java - Java内部有Thread.sleep时定时器不会停止