假设我有一个程序foo
,它只是永远打印,但在此之前停止,
int main(int argc, char * argv[])
{
kill(getpid(), SIGSTOP);
while(1) {
printf("foo\n");
}
return 0;
}
然后我有一个程序 bar
可以 fork 并运行 foo
:
int main(int argc, char * argv[])
{
pid_t pid = fork();
if (pid == 0)
{
execl("foo", "foo", NULL);
}
return 0;
}
现在,我希望 bar
能够向 foo
发送 SIGCONT,以便它可以继续执行打印任务,然后再次发送 SIGSTOP,甚至稍后发送再次 SIGCONT,依此类推。
我不知道该怎么做。有什么帮助吗?
编辑:我找到了我的问题。显然,foo
程序在运行时尚未准备好立即接受信号。当我这么做的时候
sleep(5);
int rc = kill(pid, SIGCONT);
成功了。
最佳答案
pid_t pid = fork();
if (pid == 0)
{
execl("foo", "foo", NULL);
}
int rc = kill(pid, 18);
return 0;
关于process - 如何向通过 fork 和 execl 创建的子进程发送信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722320/