我刚学会了fork,据我所知,子进程从fork调用开始执行(否则fork会递归?).
但是在此代码中(ideone链接):
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());
}
Run Code Online (Sandbox Code Playgroud)
输出是:
27380: Common code1
27380: Parent code
27380: Common code
27380: Common code1
27383: Child code
27383: Common code
Run Code Online (Sandbox Code Playgroud)
我不明白为什么打印第4行?我可以理解它是从子进程打印出来的,而fork是从main打印的,但是它是从父进程打印的,而fork不会调用main.