我是一名初學者,正在努力學習如何fork()和wait()函數的工作。分叉/等待C程序。我應該輸出什麼?我的輸出是否正確?
有人可以運行我的代碼,並告訴我我的輸出應該是什麼?
現在我越來越: 一個 乙 Ç 一個 乙 Ç 一個 d Ë
然而,我的一個朋友說,這應該是: 一個 乙 Ç A D E A B C
而另一說,它應該是: 一個 乙 Ç Ç d Ë
因爲等待的()函數,我想子進程有父之前完成。這就是爲什麼我期望輸出以'E'結尾的原因。
然後會有什麼可能的輸出?我不明白我什麼時候運行它,我得到ABCABCADE。 'A'是否只能在初始子進程中打印一次?
#include <stdio.h>
#include <unistd.h>
#include <wait.h>
int main(void) {
int pid;
pid= fork();
if (pid == 0) {
fprintf(stdout, "A\n");
pid= fork();
if (pid==0) {
fprintf(stdout, "B\n");
pid=fork();
fprintf(stdout, "C\n");
}
else {
wait(NULL);
fprintf(stdout, "D\n");
}
}
else {
fprintf(stdout, "E\n");
wait(NULL);
}
// your code goes here
return(0);
}
你寫了什麼「你的代碼放在這裏」?反正輸出不是確定的;你可以在不同的運行中得到不同的結果。另外,如果管道輸出或將輸出重定向到文件,則可以再次獲得不同的結果。 –