web-dev-qa-db-ja.com

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

私のアプリケーションでは、open()呼び出しを使用してファイルを開きます。

私の質問は:

  • プロセスを強制終了した場合、ファイルは(返されたファイル記述子でclose()呼び出しを使用して)自動的に閉じられますか?
  • アプリケーションがクラッシュした場合(セグメンテーション違反など)はどうなりますか?
  • これはどこかに文書化されていますか?
3
sapg

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

これは POSIXに文書化されています です。 「 プロセス終了の結果 」では、他の結果の中で:

  • 呼び出しプロセスで開いているファイル記述子、ディレクトリストリーム、変換記述子、およびメッセージカタログ記述子はすべて閉じられます。

そして「 プロセスの終了 」では:

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

6
Stephen Kitt

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

プロセスの終了

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

1
UVV