プロセスが終了すると、ファイル記述子はどうなりますか?

プロセスが終了すると、ファイル記述子はどうなりますか?

私のアプリケーションでcallを使ってファイルを開きますopen()

私の質問は次のとおりです

  • プロセスを終了すると、ファイルは自動的に閉じますか(返されclose()たファイル記述子への呼び出しを使用している場合と同じように)?
  • アプリケーションがクラッシュした場合(分割エラーなど)、どうなりますか?
  • これはどこかに文書化されていますか?

答え1

はい、プロセスの終了理由に関係なくプロセスが終了すると、ファイルは自動的に閉じます。

これはPOSIXで文書化。存在する」プロセス終了の結果」、その他の結果:

  • 呼び出しプロセスで開かれたすべてのファイル記述子、ディレクトリストリーム、翻訳記述子、およびメッセージディレクトリ記述子は閉じる必要があります。

そして「プロセス終了":

重要なことは、説明されているプロセス終了の結果は、プロセスが呼び出されたかどうかに関係なく発生することです。_出口()(おそらく間接的に出口())または信号またはその他の理由により終了しました。

答え2

たとえば、Linuxカーネルプロセス管理について読むことができます。ここ

プロセスが終了しました

プロセスが終了すると、カーネルはプロセスが所有するリソースを解放し、子プロセスの親プロセスに終了という事実を通知します。

関連情報