2012-01-12 85 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()