从另一个终端运行kill -SIGCONT pid
后,以下过程无法继续。
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("paused\n");
pause();
printf("continue\n");
return 0;
}
我希望程序在发送信号并打印“继续”后继续。为什么这不能按预期工作?
答案 0 :(得分:4)
pause()
记录在
使调用进程(或线程)休眠,直到传递的信号终止进程或原因 调用信号捕捉功能。
但是SIGCONT只会继续之前由SIGSTOP或SIGTSTP停止的进程。
所以,您可能想尝试:
kill(getpid(), SIGSTOP);
而不是pause()
另外,您可能需要查看sigsuspend()
。