为什么这段代码从分叉执行8次printf?

时间:2016-05-01 00:34:29

标签: c printf fork

参加决赛,我遇到了这个问题。他们询问以下代码执行printf的次数:

#include    "csapp.h"
void    doit()  {   
Fork();
Fork();
printf("hello\n");
return; 
}
int main()
{
doit();
printf("hello\n");
exit(0);
}

解决方案说它printf执行8次,但我无法弄清楚原因。我一直在尝试绘制代码中正在发生的事情的图片,但我的图片似乎只执行了4次。

1 个答案:

答案 0 :(得分:6)

2个叉子 - 四个过程。每个流程都有两个printfshellomain中有一个,doit中有一个 - 因此为8。