-SIGCONT不会继续暂停过程?
问题描述:
从另一个终端运行kill -SIGCONT pid
后,以下过程不会继续。-SIGCONT不会继续暂停过程?
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("paused\n");
pause();
printf("continue\n");
return 0;
}
我希望程序在发送信号和打印“继续”之后继续。这是怎么回事?
答
pause()
是记录到
原因调用进程(或线程)到睡眠状态,直到一个信号被发送,要么终止该过程或导致 一个信号捕获函数的调用。
但是SIGCONT只继续之前由SIGSTOP或SIGTSTP停止的过程。
所以,你可能会想尝试:
kill(getpid(), SIGSTOP);
而不是你的pause()
此外,您可能想看看sigsuspend()
。