#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/