WindowsでEXEとして実行されているマルチプロセスのpythonアプリケーションがあります。オペレーティング システムのシャットダウンを選択すると、プロセスがシャットダウンされた結果として、アプリケーションは多くの例外をスローします。
マルチプロセスの終了を自分で処理できるように、Windows によるシステムのシャットダウン要求をキャプチャする方法はありますか?
WindowsでEXEとして実行されているマルチプロセスのpythonアプリケーションがあります。オペレーティング システムのシャットダウンを選択すると、プロセスがシャットダウンされた結果として、アプリケーションは多くの例外をスローします。
マルチプロセスの終了を自分で処理できるように、Windows によるシステムのシャットダウン要求をキャプチャする方法はありますか?
nabble.comページでは、次の使用が提案されていwin32api.SetConsoleCtrlHandler
ます。
「誰かが電源ボタンを押したときなど、ウィンドウがシャットダウンしたときに何かをする必要があります。これはウィンドウ メッセージ、WM_QUERYENDSESSION または WM_ENDSESSION だと思います。これをpythonでトラップする方法が見つかりません。atexit() は機能しません。シグナル モジュールを使用して SIGBREAK または SIGTERM をトラップしても機能しません。」<br> win32api.SetConsoleCtrlHandler を使用して、コンソールに送信される CTRL_SHUTDOWN_EVENT をキャッチできる場合があります。
Python windows shutdown eventsも参照 してください。「win32api.setConsoleCtrlHandler() を使用すると、Windows からシャットダウン/ログオフ/その他のイベントを受け取り、アプリを正常にシャットダウンできます」などと書かれています。