2

我正在尝试使用 fork() 和 execvp() 调用创建多个进程,但到目前为止我一直没有成功。这是我正在尝试做的事情:

进程 A、B、C 应该同时运行。当它们完成后,进程 D 应该运行。完成后,进程 E 和 F 应该运行。

我可以通过传递程序名称及其参数来成功调用 execvp(),但我不知道应该调用多少次 fork() 以及在哪里调用。我也知道如何调用 wait(),但我再次不确定应该在哪里调用它。

我该怎么做?

4

1 回答 1

0

我将通过以下方式处理此问题:

  1. 主程序启动 -> fork() 进程A,wait() 等待完成
  2. 进程 A 启动 -> fork() 进程 B,运行代码,wait() 等待进程 B 完成
  3. 进程 B 启动 -> fork() 进程 C,运行代码,wait() 等待进程 C 完成
  4. 进程 C 启动 -> 运行代码,返回到进程 B
  5. 进程 B 返回进程 A
  6. 进程A返回主程序
  7. 主程序继续运行,调用 Process D 例程(不分叉)
  8. 主程序 -> fork() 进程 E,wait() 等待完成
  9. 进程 E 启动 -> fork() 进程 F,运行代码,wait() 等待进程 F 完成
  10. 进程 F 开始 -> 运行代码,返回到进程 E
  11. 进程E返回主程序
于 2011-02-16T11:53:32.470 回答