#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回繰り返されます。何故ですか?さらに、親はどのように2
して子供から得たのですか?子には独自の仮想メモリがあるのでa
、b
その結果を親にどのように転送しましたか?私は混乱しています。
さらなる調査に挿入return 0
するcase 0
と、繰り返されません。switchステートメントが続くようです。switchステートメントについて何か見落としましたか?