何らかの種類の終了(異常、正常、キャッチされていない例外など)に関係なく、終了時にコードを実行する方法はありますか? 私はJavaで実際には可能ですが、C++でも可能ですか?私はWindows環境を想定しています。通常のクロージングapplciationについてはシャットダウンフックC++
答えて
んを示唆していないだろう - に任意のより多くのコードを実行するための任意のチャンスなしで誰かがTerminateProcess
を呼び出した場合、あなたのプロセスは、さらに別れずに破壊され、(特に)シャットダウンのプロセス。問題にアプローチする
これは正しい答えです。しかし ')あなたは'のatexitを() 'セットアップ出口ハンドラを使用することができますし、('信号を使用して、ほとんどの信号をキャッチすることができ、他の回答の一部によって示されるように - 誰かが強制終了した場合、あなたは(それをどんな行動を取ることはできませんしかし、私は出口が「正常であることを前提としている上のassert()、、)(中止)( – Soren
ありがとう)Linux上で-9を殺し、そして信号9がキャッチできていることでしょう、実際に私もそのanswere – Paranaix
のを恐れていました"すなわち、例えば経由しない'exit()'コール、またはセグメンテーション違反などによるものです。 –
私は
atexit()
一つの良い方法は、ACEライブラリ内Object Lifetime Managerを参照即ち
class ShutdownHook {
~ShutdownHook() {
// exit handler code
}
};
int main() {
ShutdownHook h;
//...
}
ここでのクリーンアップ操作をオブジェクトのデストラクタに置くことができることを意味するC++ RAIIイディオムを、使用しています。リンクされたドキュメントでは、彼らは同様にatexit
機能について議論します。
を終了: –
注意してください。これは動作保証されていません。例外がmain()をエスケープする場合、実装はスタックが巻き戻されているかどうかを定義します。したがって、この動作を保証するには、main()のすべての例外を捕捉する必要があります(コードをtryブロックに入れます)。あなたは何もする必要はありません。 –
どのような種類の終了もありません。 Linux上でKILLのように扱われないように設計されたシグナルがあります。
これらの信号は、すべてのメモリ、CPU、またはその他のリソースを消費したプログラムを終了するように設計されており、コンピュータをハンドラ機能の実行を困難にする状態にしています。
- 1. Express.jsシャットダウンフック
- 2. シャットダウンフックは、Eclipse
- 3. JUnit4:シャットダウンフックのテストは
- 4. Java Webアプリケーションのシャットダウンフック
- 5. LinuxのシャットダウンとJavaシャットダウンフック
- 6. シャットダウンフックでリターンコードを取得する方法
- 7. javaシャットダウンフックが動作しない?
- 8. Spring 2.5でシャットダウンフックを登録する
- 9. Googleクラウドデータフロー - Apacheのビーム - パイプラインのシャットダウンフック
- 10. LWJGL - シャットダウンフックでOpenGLコンテキストが失われる
- 11. Log4j2でシャットダウンフック内にログを記録する方法は?
- 12. シャットダウンフックがデバッグ時に自動的に終了する
- 13. Javaシャットダウンフックがプロセスを起動していません
- 14. データの損失/複製を最小限に抑えるためにFlinkシャットダウンフック
- 15. bashシャットダウンフック;メインプロセスが殺されたときや、すべてのバックグラウンド・プロセスを殺す
- 16. CygwinのCTRL-C(信号割り込み)が正常に動作していない - JVMのシャットダウンフックが起動していない
- 17. Javaシャットダウンフックを使用してコンピュータのログアウトにログアウト時間を保存できない
- 18. javaw.exeを使用してアプリケーションを起動したときにシャットダウンフックが実行されない
- 19. Log4J:シャットダウンフックの致命的な例外はなぜ発生しないのですか?
- 20. それぞれのKubernetesポッドの再起動時にSpringにシャットダウンフックを登録します
- 21. シャットダウンフックを使用して少し長時間の作業をすることができます
- 22. System.exitがシャットダウンフックから呼び出された場合はどうなりますか?
- 23. シャットダウンフックが実行されるように、Linux上のJavaアプリケーションを強制終了するにはどうすればよいですか?
- 24. intelliJで処理中のシャットダウンフックを呼び出す処理を停止するにはどうすればよいですか?
- 25. C/C++/Java/C#
- 26. C、C#、C++、Java用のC#コードアナライザ。
- 27. iPhone用C対C++(Objective-C対Objective-C++)
- 28. matlab in C C++とC C++ in matlab
- 29. C/C++
- 30. c、C++、c#の機能テストツール
これは、いずれかのJavaでは不可能です - 言語に関係なく、すべてのプロセスは、[私は行くだろう、Linux上で信号-9をキャッチ(およびWindows上相当)またはその信号が – Soren
を到着したときに@Drakeが示唆したように任意のコードを実行することはできませんatexit](http://www.cplusplus.com/reference/cstdlib/atexit/)。 –