-SIGCONT不继续暂停的过程吗?

Luc*_*cas 5 c command-line signals

kill -SIGCONT pid从另一个终端运行后,以下过程不会继续。

#include <stdio.h>

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望程序在发送信号并打印“ continue”之后继续执行。为什么这不按预期工作?

Tim*_*nes 5

pause() 被记录到

使调用进程(或线程)进入休眠状态,直到传递了终止该进程或导致调用信号捕获功能的信号为止。

但是SIGCONT仅继续执行先前由SIGSTOP或SIGTSTP停止的进程。

因此,您可能想尝试:

 kill(getpid(), SIGSTOP);
Run Code Online (Sandbox Code Playgroud)

代替你的 pause()

另外,您可能要看一下sigsuspend()