如何在C中使用fork()和execvp()创建多个有序进程?
问题描述:
我试图用fork()和execvp()调用创建多个进程,但到目前为止我一直不成功。这是我想要做的:如何在C中使用fork()和execvp()创建多个有序进程?
进程A,B,C应该同时运行。当它们完成时,过程D应该运行。完成后,流程E和F应该运行。
我可以通过传递程序名和它的参数成功调用execvp(),但我不知道应该调用fork()和where的次数。我也知道如何调用wait(),但我不知道它应该在哪里调用。
我该怎么做?
答
我会以下列方式处理这一:
- 主程序开始 - >叉()方法A,等待()完成
- 过程A开始 - >叉()方法B,运行码,等待()用于方法B完成
- 方法B开始 - >叉()方法C,运行代码,等待()用于方法C完成
- 过程C开始 - >运行的代码,返回到过程乙
- 过程B返回到过程A
- 进程A返回主程序
- 主要程序继续运行,调用过程d程序(不分叉)
- 主程序 - > fork()的进程E,等待()完成
- 法E开始 - >叉()方法F,运行代码,等待()用于方法F完成
- 方法F开始 - >运行的代码,返回到方法E
- 方法E返回到主程序