c - 如何正确计算 fork 创建的进程?
问题描述
我在使用 C 代码时遇到问题,这些 C 代码是用我们的教授给出的 fork 创建的进程来计算它创建的进程数。
pid1 = fork();
if (pid1 != 0) {
pid2 = fork();
pid3 = fork();
}
else {
pid4 = fork();
}
解决方案
运行代码只是有点帮助(并且不能在考试期间完成!)——最好画一个流程树。规则是每个子进程在fork
产生它的调用之后开始执行,父进程非零pid
,子进程的 apid
为零。
main
/ | \
pid1 pid2 pid3
/ |
pid4 pid3
我们可以看到main
产生了三个孩子,pid1
和pid2
(pid3
是pid1
微不足道的,另外两个在真正的if
块中产生)。pid1
继续到else
条件部分并pid4
在完成之前产生。pid2
是唯一的技巧:它会再次生成,pid3
因为那是它的执行开始的地方。
回答:
总共创建了 6 个进程(
main
和 5 个子进程)
推荐阅读
- reactjs - VS Code 中的 create-react-app 在 Windows 上引发未经授权的访问
- node.js - 如何使用 express-jwt 发送自定义错误响应?
- python - 具体爆列
- python - Pandas:推断列名的智能方法
- node.js - NodeJs 中的 GraphQl - 对象类型的解析器
- flutter - 在从相机插件捕捉图像之前裁剪图像
- powershell - 如何在没有管理员权限的情况下检查用户的命名管道?
- java - 如果上一步失败,如何执行下一步?
- linux - snap remove 说没有安装 vscode
- python - 使用字典理解有条件地合并两个字典