如何解决程序创建了多少个进程?
程序创建了多少个进程,包括 初始父进程?还有“你好”会被打印多少次?
我认为,因为它有 4 个 fork 16 个进程(使用 2^n),并且父进程添加到 16 个进程 = 17。 (不确定)
这是我的代码如下:
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main(){
int i;
for(i=0; i<3; i++){
if(fork());
printf("Hello %d\n",getpid());
}
return 0;
}
解决方法
我运行了它,它打印了 14 次“Hello”。
我认为解决这个问题的最好方法是倒退。
当 i = 2
(循环的最后一次迭代)时,将打印出两个“Hello”——一个是父级,一个是子级。
当i = 1
时,父母和孩子都会打印“Hello”一次,然后他们每个人都会继续下一次迭代,其中i = 2
(在这种情况下我们看到有是 2 个印刷品)。所以,我们总共有 2+2+2=6 个“Hello”的打印。
当i = 0
时,父母和孩子都会打印“Hello”一次,然后他们每个人都会继续下一次迭代,其中i = 1
(在这种情况下我们看到有是 6 个印刷品)。因此,我们总共有 2+6+6=14 次打印“Hello”。
这可能可以通过一些公式概括(并通过归纳证明)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。