我正在研究操作系统中的进程。我想出了一个问题,我必须创建两个子进程来使用 fork and wait 来完成类似的任务。在 parent fork 第一个 child 之后,那个 child 会等到 parent fork 另一个 child 并且第二个 child 完成它的工作。
例如,如果我想让第一个 child 显示 10 个第一个偶数,第二个 child 显示 10 个第一个奇数,则输出应该是这样的:
二胎 1 3 5 7 9 11 13 15 17 19 第二个 child 死了 第一个 child 2 4 6 8 10 12 14 16 18 20 第一个 child 死了
结束!
我一直在尝试各种方法,但我无法让第一个 child 等到第二个 child 完成工作。 有人知道怎么做吗? 谢谢
最佳答案
这些不是最优的,但可以解决问题:
首先,选择使用共享对象:
- 您可以使用 mmap 创建共享内存区域,(参见 man mmap)
- 您可以使用 shmget 和 shmat 函数系列
- 因此你们将获得彼此的 PID 并能够使用 wait (man 2 wait)
第二个选项:
- parent 知道两个 child 的 PID。
- parent 将一个接一个地向两个 child 发送信号。 (见 man 2 kill(请不要发送 KILL 信号))
- 每个 child 都有一个自定义的 parent ,并用这个信号做一些事情。
关于c++ - 如何让两个子进程互相等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797151/