プロセスを終了すると、そのプロセスで開かれたすべてのファイルが閉じますか?

プロセスを終了すると、そのプロセスで開かれたすべてのファイルが閉じますか?

データベースに開いている接続を持つプロセスを終了したいと思います。プロセスを終了すると、データベースがロック解除されたことを確認できますか?

答え1

「呼び出しプロセスで開かれたすべてのファイル記述子、ディレクトリストリーム、翻訳記述子、およびメッセージディレクトリ記述子は閉じる必要があります。」 POSIXでは、シグナルによってプロセスが終了した場合(つまり「終了」)、発生する必要があると言います。

したがって、クライアント(サーバーにアクセスするプロセス)は必ずネットワーク接続を閉じます。行動仕える人(「データベース」)顧客(「あなたのプロセス」)は、サーバーの裁量(検出とアクション)に従って終了します。

クライアント側では、ネットワーク接続は確かに閉じられていますが、この場合、サーバーがセッションで何をしているのかを知ることは困難です。テーブルまたはテーブルの行のロックを保持している場合はいつ解放する必要がありますか?

MySQLにはアイドルセッションのタイムアウトがあり、その後は消えるクライアントが保持しているロックを解除します(参照:このStackOverflowの質問)。何が起こっているのかを確認するには、使用している特定のデータベースのドキュメントを確認する必要がありますが、私の考えにはほとんどの場合アイドルタイマーが含まれます。

答え2

はい、でも...

プロセスを終了すると、そのファイルは閉じられますが、これはkillソケットや他の手段を介して接続されたプロセスではまれではありません。ネットワーク接続(データベースで使用されるなど)はすぐに成功しません。殺すのコース。psたとえば、終了待機中のプロセスが表示されます。

答え3

通常、プロセスで開かれたすべてのファイルを終了します。ただし、一部のファイル記述子がどこかで使用されている場合は、確かに閉じられません。

関連情報