睡眠功能会在收到信号时中止?

时间:2012-03-12 03:28:45

标签: 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秒后终止。

1 个答案:

答案 0 :(得分:2)

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

有趣的是,它也没有像人们期望的那样返回EINT。

它会在剩余时间内恢复成功。

请参阅: http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html 有关在中断时不重新启动的其他API的详细信息