2012-01-12 73 views
3

從另一個終端運行kill -SIGCONT pid後,以下過程不會繼續。-SIGCONT不會繼續暫停過程?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    printf("paused\n"); 
    pause(); 
    printf("continue\n"); 

    return 0; 
} 

我希望程序在發送信號和打印「繼續」之後繼續。這是怎麼回事?

回答

3

pause()是記錄到

原因調用進程(或線程)到睡眠狀態,直到一個信號被髮送,要麼終止該過程或導致 一個信號捕獲函數的調用。

但是SIGCONT只繼續之前由SIGSTOP或SIGTSTP停止的過程。

所以,你可能會想嘗試:

kill(getpid(), SIGSTOP); 

而不是你的pause()

此外,您可能想看看sigsuspend()