【发布时间】:2021-03-31 15:45:25
【问题描述】:
我想创建一个矩阵,其中每个单元格都包含一个进程(稍后将执行一些必需的操作)。目前,我只想打印显示每个进程的 PID 的矩阵,但是使用 fork() 函数我不断得到一个无限循环。我可能不明白 fork 函数是如何工作的。任何人都可以向我解释它是如何工作的,甚至可以给我一些关于我刚刚介绍的案例的例子吗?提前致谢!
pid_t forking;
for (int i = 0; i < ROW; i++){
for (int j = 0; j < COL; j++){
forking = fork();
exit(EXIT_SUCCESS);
}
}
【问题讨论】:
-
请展示你的代码,解释它试图做什么以及它有什么错误或不正确的行为。
-
我只是猜测,但也许您让子进程在工作后继续?您必须记住在子进程完成处理后
exit。 -
@kaylum 我添加了代码,我只是因为缺少最重要的部分而遗漏了它,而且正如我在问题中解释的那样,我无法添加。
-
@Someprogrammerdude 如何在我的代码中添加出口?
-
建议您阅读manual page 并查看链接示例。你所拥有的被称为“分叉炸弹”——每个子进程也在循环中调用
fork。您需要在fork调用之后添加代码,以分离出父进程的作用(继续fork循环)和子进程应该做什么(例如打印一些东西)。