#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秒后终止。
答案 0 :(得分:2)
sleep()是在中断时永远不会重新启动的那些函数之一。
有趣的是,它也没有像人们期望的那样返回EINT。它会在剩余时间内恢复成功。
请参阅: http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html 有关在中断时不重新启动的其他API的详细信息