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

3
我目前正在尝试与一个父进程通信,该进程应该为每个请求拥有多个子进程,并希望知道如何跟踪子进程数量并检查是否有任何子进程已终止?
我尝试使用管道进行通信,使用read()函数发送终止消息。然而,这会阻塞所有并发操作,并在处理下一个进程请求之前等待1个子进程完成并发送回终止消息。
有没有解决方法?还是必须使用共享内存、套接字等方法?
我正在使用C语言,只需要一种方式来跟踪我有多少个子进程。我可以在父进程中增加计数器,但当一个子进程死亡时,如何获取该消息并将其用于在父进程中减少计数器?

你使用哪种编程语言或框架? - Niko Sams
需要传达多少信息?通信是双向的吗? - wallyk
1个回答

2
在符合POSIX标准的平台上,如果您只想知道子进程何时退出而不需要其他任何信息,则可以使用SIGCHLD信号。
SIGCHLD是一个信号,当一个子进程终止时会发送给一个进程,您可以编写自己的信号处理程序来处理它。它的返回值是退出的子进程的进程 ID。
如果您需要在程序执行期间定期在父进程和子进程之间进行通信,则必须使用某种形式的进程间通信(IPC)机制,其选择取决于多个因素,如性能、同步需求、串行通信需求等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接