我正在阅读这些操作系统书籍,他们谈论的是在UNIX机器上分叉。我知道fork()
是一个系统调用,它创建了一个进程的副本(一个父进程和一个子进程)。让我们说下面的代码:
1 int main(){
2 pid = fork ();
3 if (pid !=0)
4 fork();
5 fork();
当PID为0时,我们处于子进程中,如果没有,那么我们是在父进程中吗?所以上面的代码执行如下(第2行):
P0
/\
P0 P1
由于P1不是0,那么我们执行第4行 - 然后我们执行第5行,这意味着P0被分叉
P0
/ \
P0 P1
/\ / \
P0 P2 P1 P3
所以创建的进程总数是:P0,P1,P2,P3,4个进程?这本书说这是六个过程,但没有迹象表明这是如何完成的。
感谢
更新:这不是一个功课问题,因为我已经声明结果应该是6个过程,我只是不明白这本书是如何得到这个答案的
答案 0 :(得分:0)
您的代码应创建总共6个进程。
共6个过程= PM + PC1 + PC2 + PCC1 + PCC2 + PCCC1
画画:
PM / \ PC1 PC2 (@2) (@5) / \
PCC1 PCC2 (@4) (@5) / PCCC1 (@5)