- それはいくつかの方法でこのイベントを処理することは可能ですか?
- スタティック/グローバルオブジェクトのスタックの巻き戻しおよび割り当て解除に関してはどうなりますか?
答えて
EDIT:SIGINT、SIGTERMではありません。また、Assafは、手元にないSIGINTのオブジェクトは(少なくともWindowsでは)破壊されないと報告しています。
システムは、SIGINTを送信します。この概念は、すべてのC実装に適用されます(多少の違いはあります)。これを処理するには、signalハンドラを指定してsignalを呼び出します。信号関数については、Open GroupとMSDNのドキュメントを参照してください。
2つ目の質問は少しトリッキーで、実装に依存してもよいです。最高の賭けは信号を処理することです。これによりdelete
とexit()
を手動で使用することができます。コンソールアプリケーションで
感謝。 fyi、あなたがリンクしたMSDNページは、システムがSIGINTを送信することを示唆しています(そして、NTは上向きにSIGTERMを送信しません)。 –
ありがとう、Assaf。修正されました。 –
また、ExitProcessに変換されるSIGINTは、あらゆる種類のオブジェクト(グローバル、ローカル静的、自動)の破棄をトリガーしません。 otoh、sigintをexit()に変換すると、globals/staticsは初期化の逆の順序でデストラクタになります(ただし自動化されません)。 –
はCtrl-Cは、信号を生成します。このシグナルのデフォルトのハンドラはExitProcessを呼び出してアプリケーションを終了します。 SetConsoleCtrlHandler関数を使用して、信号の独自のハンドラ関数を設定することで、この動作を無効にすることができます。
+1実際に質問に答えるために+1! –
統計情報の割り当て解除はどうですか? –
あなたは、いくつかの簡単なコードで、スタックの巻き戻しが発生したかどうかをテストすることができます
#include <iostream>
#include <windows.h>
using namespace std;
struct A {
~A() { cerr << "unwound" << endl; }
};
int main() {
A a;
while(1) {
Sleep(1000);
}
}
実行時にCtrl-Cをどのように扱うかに応じて、実装依存であるべきではない発生するかどうか。私の経験では、それは起こらない。
良いテスト!私は訂正した。 –
さまざまなプロジェクト構成(libs、dlls、ネイティブ、管理、マルチスレッド、それらの組み合わせなど)によって動作が異なるかどうかは決して確信できないため、このようなテストは信頼できません。だから私はむしろ "本当の"答えを持って、そのようなテストに自分自身は頼っていないだろう。 –
"本当の"答えはありません - C++標準はこの件に関して何も言わないので、あなたが得るものは常に実装に依存します。 –
- 1. Win32コンソールアプリケーション対CLRコンソールアプリケーション
- 2. Control-CでC#コンソールアプリケーションを中断するとどうなりますか?
- 3. devenv.comは有効なwin32アプリケーションではありませんか?
- 4. コンソールアプリケーションのコンテキストメニューはどうなりましたか?
- 5. C++ Win32コンソールアプリケーションの出力をプロットするにはどうすればよいですか?
- 6. c#無効なwin32アプリケーション
- 7. どのようなC#/ Win32コントロールがワイヤレスネットワークのダイアログですか?
- 8. Win32コンソールアプリケーションの正しいエントリポイントは何ですか?
- 9. C++コンソールアプリケーションを終了するとどうなるのですか?
- 10. C Win32コンソールアプリケーションでカードスーツ文字を印刷するにはどうしたらいいですか?
- 11. 分散効果のような効果を作り出すにはどうすればいいですか?
- 12. php_oci8_11g.dllは有効なWin32アプリケーションではありません
- 13. Cの代入式の結果はどうなりますか?次のコードで
- 14. extern "C"はC言語で効果がありますか?
- 15. XXX.exeは有効なWin32アプリケーションではありません
- 16. C++ CLR win32など?
- 17. C#(かなり遅い)とWin32/Cのパフォーマンスの違いはなぜですか?
- 18. Win32コンソールアプリケーションまたはCLR - > windowsフォームアプリケーションですか?
- 19. エラー193%1は有効なWin32アプリケーションではありません
- 20. Box2dエラーC:\ filepath \ box2D.libは有効なWin32アプリケーションではありません
- 21. Win32ウィンドウポインタが有効な.Netコントロールであるかどうかを確認する方法はありますか?
- 22. "socket.core"は有効なWin32アプリケーションではありません
- 23. ROracle.dllは有効なWin32アプリケーションではありません
- 24. Vaadinプロジェクトを書くにはどのような効果がありますか?
- 25. 有効なWin32アプリケーションではありません
- 26. Win32コンソールアプリケーションでShutdownBlockRequestCreateを使用する
- 27. MySQLは有効なwin32アプリケーションではありません
- 28. server.bashは有効なwin32アプリケーションではありません
- 29. 問題:「F:\は有効なWin32アプリケーションではありません」
- 30. "エラー193%1は有効なwin32アプリケーションではありません"
1:優れた質問:) –
優れたハンドル:) –