0
int main() {
int p1, p2;
printf("A\n"); // we always print A first
p1 = fork();
if (p1 == 0) { // child
printf("B\n");
p2 = fork(); // fork
if (p2 == 0) {
sleep(2);
printf("C\n");
exit(0);
}
wait(0); // parent waits for child to finish
}
printf("D\n");
exit(0);
return 0;
}
輸出我得到的是以下幾點:以下fork程序的輸出是什麼?
A // always first
B or D // whether we are in parent or child. Program may be terminated here
C // always since parent of p2 waits
D // since p2 parent exits if condition, prints D, then exits(0)
我碰到這個100倍,我總是得到ABD ... terminate ... CD
。 'D'總是出現在'B'之前。這是隨機還是有我沒有看到的原因?
謝謝。
你總是得到ADBCD,或者有時程序有時在第二個字母后終止?你似乎發佈了矛盾的信息。 –
ABD ...終止... CD –
看到這個答案尤其是第四部分:https://stackoverflow.com/a/6697102/13422 –