終了時にコードを実行する方法はありますか (異常、正常、キャッチされない例外など)。Javaで実際に可能であることは知っていますが、C++でも可能ですか? Windows環境を想定しています。
4856 次
4 に答える
5
いいえ -- 誰かが を呼び出しTerminateProcess
た場合、プロセスはそれ以上の別れを告げることなく破棄され、(特に) シャットダウンの過程でこれ以上コードを実行する機会がなくなります。
于 2011-08-07T18:40:00.770 に答える
3
通常のクロージングアプリケーションの場合、私はお勧めします
atexit()
于 2011-08-07T18:33:26.360 に答える
1
この問題に対処する 1 つの良い方法は、C++ RAII イディオムを使用することです。これは、クリーンアップ操作をオブジェクトのデストラクタに配置できることを意味します。つまり、
class ShutdownHook {
~ShutdownHook() {
// exit handler code
}
};
int main() {
ShutdownHook h;
//...
}
ACE ライブラリのObject Lifetime Managerを参照してください。リンクされたドキュメントでは、atexit
機能についても説明しています。
于 2011-08-07T18:40:51.147 に答える
0
いかなる種類の終了でもありません。Linux の KILL のように、処理されないように設計されたシグナルがあります。
これらのシグナルは、すべてのメモリ、CPU、またはその他のリソースを消費し、ハンドラー関数の実行を困難にする状態でコンピューターを放置したプログラムを終了するように設計されています。
于 2011-08-08T11:00:16.073 に答える