2012-03-12 8 views
0
#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秒後に終了してはならないと思いまして入力。

答えて

2

sleep()は、中断されたときに再起動されない関数の1つです。興味深いことに、興味深いことに、EINTも期待通りに返されません。

代わりに、スリープ状態にある残りの時間で成功を返します。

参照:

を中断したときに再起動しないでください他のAPIの詳細については、 http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html
関連する問題