は発生しません:は、次のコードではエラー
int main(void) {
printf("before child\n");
int pid = fork();
if(pid == 0)
{
exit(0);
}
int status;
wait(&status);
if(4 != printf("abc\n"))
perror("printing to stdout\n");
return 0;
}
は出力を生成します。子供に)(終了する
before child
abc
コールは、すべてのファイルdiscriptorsを閉じる必要がありますstdout fdを含む。 親プロセスは、閉じた後もstdoutに書き込むことができますか?
printfの戻り値を確認しますが、 'fork'、' wait'のためにチェックしていませんか? –
各プロセスには独自の記述子があります。子を閉じても、親の記述子は閉じられません。 – Barmar
あなたは* parent *プロセスも '' abc "'を発行することを理解していますか? –