【问题标题】:Can we dynamically create a process and maintain a process pool?我们可以动态创建一个进程并维护一个进程池吗?
【发布时间】:2013-06-17 12:54:01
【问题描述】:

我的一台服务器用 C 语言编写,使用 fork() 创建了“N”个子进程,并委托其运行报告的任务。它没有能力监视它的子进程是否活着或死了。目前的要求是,只要活动进程的数量小于 N,就生成一个新进程。(例如,如果五个子进程中有两个死了。)我应该再生成两个进程。我正在使用socketpair() 在父进程和子进程之间进行通信。

我阅读了各种帖子,但似乎他们谈论的是“预分叉”机制。 本质上,我对使用fork() 动态创建子进程感兴趣。是否可以?如果是的话,请给我一些指点?

【问题讨论】:

  • 这里的问题是什么?如果是“我如何创建子进程?”那么答案是fork

标签: c++ c process fork


【解决方案1】:

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

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

fork is here 的人。

跟踪death of child is here的类似问题。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多