父进程与多个子进程之间的通信

时间:2012-04-02 05:29:10

标签: c process

我目前正在尝试传达一个父进程,该进程应该为每个请求设置多个子进程,并希望知道如何跟踪子进程数并检查是否有任何子进程已终止?

我尝试使用管道进行通信,使用read()函数发送回终止消息。但是,这会以某种方式阻止所有并发并等待1个子进程完成并在处理下一个进程请求之前发送回终止消息。

有没有办法解决这个问题?或者我必须使用共享内存,套接字等方法......?

我正在使用C语言,我只需要一种跟踪我有多少孩子的方法。我可以在父进程中增加一个计数器,但是当一个孩子死了?如何获取该消息并使用它来减少父级中的计数器?

1 个答案:

答案 0 :(得分:2)

在符合POSIX标准的平台上,如果您只是想知道子进程何时退出,那么您可以使用 SIGCHLD 信号。
SIGCHLD是子进程终止时发送给进程的信号,您可以通过编写自己的信号处理程序来处理它。它的返回值是退出的子进程的进程ID。

如果您需要在程序执行过程中定期在父进程和子进程之间进行通信,那么您将不得不使用某种 Inter Process Mechanism(IPC) ,其选择取决于性能,同步需求,串行通信等需求等因素。