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

发布于 2024-10-17 10:02:05 字数 256 浏览 0 评论 0原文

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

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

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

我该怎么做?

I am trying to create multiple processes using fork() and execvp() calls, but so far I've been unsuccessful. Here is what I am trying to do:

Processes A, B, C should run at the same time. When they are finished, process D should run. When it is done, processes E and F should run.

I can call execvp() successfully by passing the program name and its arguments, but I don't know how many times I should call fork() and where. I also know how to call wait(), but again I am not sure where it should be called.

How would I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

趁微风不噪 2024-10-24 10:02:05

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

  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 例程(不分叉)
  8. 主程序 -> fork() 进程 E,wait() 完成
  9. 进程 E 启动 -> fork() 进程 F,运行代码,wait() 等待进程 F 完成
  10. 进程 F 启动 ->运行代码,返回到进程E
  11. 进程E返回到主程序

I would approach this in the following manner:

  1. Main Program starts -> fork() Process A, wait() for completion
  2. Process A starts -> fork() Process B, run code, wait() for Process B completion
  3. Process B starts -> fork() Process C, run code, wait() for Process C completion
  4. Process C starts -> runs code, returns to Process B
  5. Process B returns to Process A
  6. Process A returns to Main Program
  7. Main Program continues to run, calls Process D routines (without forking)
  8. Main Program -> fork() Process E, wait() for completion
  9. Process E starts -> fork() Process F, run code, wait() for Process F completion
  10. Process F starts -> runs code, returns to Process E
  11. Process E returns to Main Program
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文