私は初心者であり、fork()とwait()関数がどのように動作するのかを学んでいます。フォーク/待機プログラム。私の出力は何でしょうか?私の出力は正しいですか?
誰かが自分のコードを実行し、自分の出力が何であるべきか教えてください。
今私が取得しています: B C B C に D Eを
しかし、私の仲間は、それがあるべきと言う: B C A D E A B C
もう一つは、それがあるべきと言う:ので、待ち時間()関数の B C C D E
、私は子プロセスが親の前に終了すると思っていました。そのため、私は出力が「E」で終わると考えています。
可能な出力は何でしょうか?私はそれを実行するとき、私はABCABCADEを得ることを理解していない。最初の子プロセスのために一度だけ印刷されるべきではありませんか?
#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);
}
「あなたのコードはここに」どこに書いていますか?とにかく出力は確定的ではありません。異なるランで異なる結果を得ることができます。また、出力をパイプしたり、出力をファイルにリダイレクトしたりすると、別の結果を再度得ることができます。 –