gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:17:08 25 4
gpt4 key购买 nike

我目前正在尝试与一个父进程进行通信,每个请求都应该有多个子进程,我想知道如何跟踪子进程的数量并检查是否有任何子进程已终止?

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

有办法解决吗?还是我必须使用共享内存、套接字等方法...?

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

最佳答案

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

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

关于父进程与多个子进程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com