24

質問がすべてを物語っていると思いますが、誰かがc ++コンソールアプリを閉じるとどうなりますか?のように、上隅の「x」をクリックします。すぐに閉じますか?ある種の例外をスローしますか?未定義動作ですか?

4

4 に答える 4

21

上隅に「x」が付いたc++コンソールアプリを閉じると、 SetConsoleCtrlHandler関数CTRL_CLOSE_EVENTを使用してコントロールハンドラーを設定した場合にキャッチして処理できるがスローされます。そこでは、閉じる機能をオーバーライドして、やりたいことを何でも実行し、オプションでデフォルトの動作を実行することができます。

于 2009-03-30T06:11:40.987 に答える
9

私は、コンソールプロセスがOSによって不用意に殺されてしまうことを想像しています。このイベントをトラップして何かを実行したい場合は、SetConsoleCtrlHandler関数がその方法のように見えます。

参照:

于 2009-03-30T06:08:04.097 に答える
9

Linuxおよびその他のUnixシステムでは、コンソールは別のプロセスとして実行されます。シェルを閉じると、現在アクティブな1つまたは複数のバックグラウンドで実行されていないプロセスにSIGHUP信号が送信されます。プログラマーがそれを処理しない場合、プロセスは単に終了します。端末とアクティブなプロセスとのSSHセッションを閉じると、同じシグナルが送信されます。

于 2009-03-30T06:09:00.180 に答える
8

SIGBREAKWindowsで発生します。

于 2014-12-15T13:12:44.983 に答える