重複の可能性:
fork() するときにファイル記述子は共有されますか?
Linux に次のコードがあるとします。
int main()
{
FILE* f = fopen("file.txt", "w");
fork();
fwrite("A", 1, 1, f);
fclose(f);
return 0;
}
ドキュメントから私が知ってfork
いることは、現在のプロセスのコピーを作成するということです。メモリの状態もコピーするため、両方のインスタンスで *f が等しくなるはずです。しかし、ファイル ハンドルなどのシステム リソースはどうなるでしょうか。この例では、書き込み目的でファイルを開いているので、ファイルに書き込むことができるのは 1 つのインスタンスだけですよね? 実際にファイルに書き込むインスタンスはどれですか? ファイルハンドルをさらに気にして、 fclose() を呼び出す必要があるのは誰ですか?