参加决赛,我遇到了这个问题。他们询问以下代码执行printf的次数:
#include "csapp.h"
void doit() {
Fork();
Fork();
printf("hello\n");
return;
}
int main()
{
doit();
printf("hello\n");
exit(0);
}
解决方案说它printf执行8次,但我无法弄清楚原因。我一直在尝试绘制代码中正在发生的事情的图片,但我的图片似乎只执行了4次。
答案 0 :(得分:6)
2个叉子 - 四个过程。每个流程都有两个printfs
和hello
(main
中有一个,doit
中有一个 - 因此为8。