1

そのため、ユーザー統計やその他のデータを処理する必要があるコマンドライン サーバー プログラムに取り組んでおり、サーバーを停止してユーザー統計とデータをファイルに保存するコマンドがあります。私が知りたいのは、停止コマンドを使用せずにサーバーが終了したときに、ユーザーの統計とデータも保存する方法があるかどうかです。新しいプロセスを作成して、プロセスがいつ終了するかを調べようとしましたが、サーバーがいつ終了するかわかりませんでした。解決策はありますか?

4

1 に答える 1

1

誰かCtrl+Cがプログラムを操作したり、予期しない方法でプログラムを終了させたりする状況について話していると思います。この状況に対処する最善の方法は、シャットダウン フックを使用することです。

ドキュメントから:

仮想マシンがシャットダウン シーケンスを開始すると、登録されているすべてのシャットダウン フックが不特定の順序で開始され、同時に実行されます。

ただし、ドキュメントにも次のように記載されているため、これが機能しない可能性があります。

まれに、仮想マシンが異常終了する場合があります。つまり、正常にシャットダウンせずに実行を停止する場合があります。これは、仮想マシンが外部で終了した場合に発生します。たとえば、Unix の SIGKILL シグナルや Microsoft Windows の TerminateProcess 呼び出しによって発生します。たとえば、内部データ構造が破損したり、存在しないメモリにアクセスしようとしたりして、ネイティブ メソッドが失敗した場合にも、仮想マシンは中止される可能性があります。仮想マシンが異常終了した場合、シャットダウン フックが実行されるかどうかは保証されません。

于 2013-04-17T06:42:10.867 に答える