gpt4 book ai didi

c - 如何在 C 中使用 fork() 和 execvp() 创建多个有序进程?

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:51 26 4
gpt4 key购买 nike

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

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

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

我该怎么做?

最佳答案

我会通过以下方式解决这个问题:

  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. 主程序继续运行,调用进程 D 例程(不 fork )
  8. 主程序 -> fork() 进程 E,wait() 完成
  9. 进程 E 开始 -> fork() 进程 F,运行代码,wait() 等待进程 F 完成
  10. 进程 F 启动 -> 运行代码,返回进程 E
  11. 进程E返回主程序

关于c - 如何在 C 中使用 fork() 和 execvp() 创建多个有序进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com