我们可以动态地创建流程并维护流程池吗?

Can we dynamically create a process and maintain a process pool?

本文关键字:程池吗 维护 创建 动态 我们      更新时间:2023-10-16

我的一个用C编写的服务器使用fork()创建了'N'个子进程,并将运行报告的任务委托给它。它没有能力监控它的子进程是活是死。目前的需求是,每当活动进程的数量达到&lt时,就生成一个新进程。N.(例如,如果5个子进程中有2个子进程死亡。)我应该再生成两个进程。我使用socketpair()在父进程和子进程之间进行通信。

我阅读了各种帖子,但似乎他们谈论的是"pre-fork"机制。从本质上讲,我对使用fork()动态创建子进程感兴趣。这可能吗?如果是,你能给我一些建议吗?

如果您需要的是监视子进程并在它们停止时生成它们,那么这种方法可能会有所帮助。

使父进程在循环中使用waitpid等待子进程的更改。在父节点上维护一个计数器来跟踪活动进程的数量。根据您的需求,您可以使用fork调用创建一个或多个新的子进程并更新计数器。

fork的Man is here

跟踪儿童死亡的类似问题在这里