#include <stdio.h>
#include <unistd.h>
int main()
{
int a = 1, b = 1;
int rval, pid;
pid = fork();
switch(pid)
{
case -1:
printf("I am bad.\n");
case 0:
printf("I am in child.\n");
rval = a + b;
printf("leaving child.\n");
default:
wait();
printf("I am back to parent.\n");
//wait();
printf("%d \n", rval);
printf("leaving parent.\n");
}
return 0;
}
我期待孩子的陈述,然后是父母。但不应该有任何重复。反而,
>> ./demo
I am in child.
leaving child.
I am back to parent.
2
leaving parent.
I am back to parent.
134513584
leaving parent.
父母重复两次。这是为什么?此外,父母是如何2
从孩子那里得到的?Child 有自己的虚拟内存a
,b
那么我们如何将结果传递给 parent 呢?我很困惑。
进一步调查当我插入时return 0
,case 0
它不会重复。看起来 switch 语句仍在继续。我错过了关于 switch 语句的一些东西吗?