2011-02-16 41 views
2

我试图用fork()和execvp()调用创建多个进程,但到目前为止我一直不成功。这是我想要做的:如何在C中使用fork()和execvp()创建多个有序进程?

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

我可以通过传递程序名和它的参数成功调用execvp(),但我不知道应该调用fork()和where的次数。我也知道如何调用wait(),但我不知道它应该在哪里调用。

我该怎么做?

回答

0

我会以下列方式处理这一:

  1. 主程序开始 - >叉()方法A,等待()完成
  2. 过程A开始 - >叉()方法B,运行码,等待()用于方法B完成
  3. 方法B开始 - >叉()方法C,运行代码,等待()用于方法C完成
  4. 过程C开始 - >运行的代码,返回到过程乙
  5. 过程B返回到过程A
  6. 进程A返回主程序
  7. 主要程序继续运行,调用过程d程序(不分叉)
  8. 主程序 - > fork()的进程E,等待()完成
  9. 法E开始 - >叉()方法F,运行代码,等待()用于方法F完成
  10. 方法F开始 - >运行的代码,返回到方法E
  11. 方法E返回到主程序