我刚学习了关于fork的知识,据我理解,子进程从调用fork开始执行(否则fork会递归?)。
但是在这段代码中(ideone link):
int main() {
printf("%d: Common code1\n", getpid());
if (fork() != 0) {
printf("%d: Parent code\n", getpid());
} else {
printf("%d: Child code\n", getpid());
}
printf("%d: Common code\n", getpid());
}
输出为:
27380: Common code1
27380: Parent code
27380: Common code
27380: Common code1
27383: Child code
27383: Common code
我不明白为什么第四行会被打印出来?如果它是从子进程中打印并且fork调用了main,我可以理解,但它是从父进程中打印的,而fork没有调用main。