#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
int main(){
pid_t pid;
int num_coconuts = 17;
pid = fork();
if(pid == 0) {
num_coconuts = 42;
exit(0);
} else {
wait(NULL); }
}
printf("I see %d coconuts!\n", num_coconuts);
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
结果是"我看到了17个椰子".为什么当pid == 0时num_coconuts没有改变?
让我们观察一下你的代码做了什么:
num_coconuts = 17.pid == 0)或者它是父进程(pid != 0).num_coconuts = 42,然后立即退出.num_coconuts正如您所看到的,您的子进程永远不会达到5.因为您在步骤4中退出.删除exit()并且您将获得两个椰子.