将新任务分配给fork()进程

时间:2019-06-14 18:01:56

标签: c multiprocessing signals fork

我需要创建一个多进程程序,该程序:

  1. 使用fork()创建5个进程;
  2. 发送内容以使用管道执行子进程
  3. 子进程完成其填充后,应该从父进程那里接收要执行的新填充,直到所有填充完成。

现在我的想法是wait()完成已完成的子任务(然后退出),然后创建一个新的子进程,因此我始终最多有5个进程。

有没有办法“重用”已经存在的过程?也许“发信号”的东西?在Google上找不到它。

使用C。

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了我的问题:

  • 孩子将计算结果写在管道A上(该管道未阻塞)。然后,他们在管道B上等待下一个输入(该管道正在阻塞)。

  • 所有试图从管道A读取内容的子代上的父循环(该管道未阻塞,因此如果子代未发送任何内容,则父代继续进行)。如果管道A包含结果,则父级将另一个任务发送给管道B上的那个孩子。

每个孩子都有一个烟斗A和一个烟斗B。