2011-07-07 60 views

回答

0

我是通过使用信号量和信号处理程序完成的。要唤醒孩子,父进程会向子进程发送一个信号,然后再从信号处理程序中发布信号。那个等待那个信号量的孩子,然后醒了过来。

-1

您可以发送您的流程SIGSTOP,然后通过SIGCONT继续。

+0

在执行过程中发送SIGSTOP是否安全?他们不是一种从一开始就暂停的方式吗? Ptrace是我想到的一件事。 – MetallicPriest

+0

您刚刚推荐了一种易受竞争条件影响的解决方案。 –

+0

您可以随时使用raise来发送信号:http://pubs.opengroup.org/onlinepubs/009695399/functions/raise.html –

4

为什么不在分叉后的子进程代码中调用pause()

+0

要么是这样,要么是对sigsuspend(2)的调用,然后是kill(pid, SIGXXX),其中SIGXXX是选择的信号。 SIGCONT也许? –

+0

@Jorgen,sigsuspend不会做你认为的事情。 –

+0

@迈克尔:它确实是文档所说的。 –