14

POSIX OSには、killでシャットダウンするために処理するシグナルを送信できるシグナルAPIがあり、sigactionでキャッチして、必要なことを実行できます。

ただし、Win32はPOSIXシステムではないため、次のようになります。

  • たとえば、「タスクマネージャ」の「プロセスの終了」から発生する可能性のあるシャットダウンイベントを処理するにはどうすればよいですか?
  • Win32アプリケーションにシャットダウン信号を送信するための標準APIは何ですか?

私はGUIについて話しているのではなく、うまくシャットダウンされるべきTCP/IPサーバーについて話しているのです。これはWindowsサービスのようには実行されません。

4

3 に答える 3

6

MSDNのUnixコード移行ガイドには、 Win32コード変換と信号処理に関する章があります。
マイクロソフトはこの素晴らしいガイドをアーカイブすることを決定しましたが、それは非常に便利です。

3つのメソッドについて説明します。
ネイティブシグナル
イベントオブジェクト
メッセージ

于 2009-08-01T15:26:40.440 に答える
4

WM_QUIT最初に作成したスレッドにメッセージが表示されます。

これを処理しないと、プロセスが強制的にシャットダウンされます。

WM_QUITしたがって、メッセージを探す最初のスレッドにメッセージキューを実装するだけです。

于 2009-08-01T15:27:43.323 に答える
3

MSDNのWindowsPowerManagementが役立つかもしれません。ただし、プロセスごとではなく、システムイベントを処理します。

プロセスの場合、で終了を検出できますWM_CLOSE。Windowsメッセージを処理する必要があります。コンソールアプリケーションの場合は、コントロールハンドラーをインストールする必要があります。MSDNのSetConsoleCtrlHandlerを見てください

于 2009-08-01T15:19:58.267 に答える