以下fork()调用的输出是什么?
func(){
fork();
fork();
fork() && fork() || fork();
fork();
print("Saikacollection\n");
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我获得此代码的答案以及一些解释,因为我是操作系统的新手?我在SO上找到了关于fork()的几个问题,但是不知道多少.
Pra*_*ngh 16
Saikacollection将打印40时间作为代码的输出.这可以解释如下: -
要了解输出,我们需要了解以下内容: -
parent process.pid子项返回(进程标识符)为父级0子进程.
考虑一下显示的图像: -
惯例:该过程的所有父母(呼叫者)都被写入left并标记为star.
fork()
Run Code Online (Sandbox Code Playgroud)
一开始,我们只有一个进程,因此fork()调用会创建一个子进程.考虑树的根作为级别1,我们可以在级别2看到,我们有两个进程,父进程(左)和子进程(右).
fork()
fork()再次进一步创建了4这样的进程,标记为1,2,3,4.由于所有四个进程都将进一步通过类似的代码结构,我们可以说进程总数将是4单个进程生成的时间
fork()&&fork()||fork()
理解这个陈述涉及到,实现了在C中的事实, && operator has more precedence than ||
first两个操作数的加入了&&去wrong,我们don't check the second.同样,如果first两个操作数的||就是true,we don't check the second操作数.&&fork()对于父级在第4级的执行,返回一个进程的pid,该进程终止,而该步骤的子进程为0.因此,它将执行||fork()||fork()5级孩子的最后调用,进一步产生了一个过程如果我们对所有三个节点都做了同样的事情,我们就可以获得5*4 = 20进程.
fork()
最终fork()只是doubles该步骤可用的进程数.
2*20 = 40.| 归档时间: |
|
| 查看次数: |
3185 次 |
| 最近记录: |