我有一个多处理的 python 应用程序,它在 Windows 上作为 EXE 运行。在选择关闭操作系统时,应用程序会由于进程关闭而引发许多异常。
有没有办法通过 Windows 捕获系统关闭请求,以便我可以自己处理多进程的关闭?
我有一个多处理的 python 应用程序,它在 Windows 上作为 EXE 运行。在选择关闭操作系统时,应用程序会由于进程关闭而引发许多异常。
有没有办法通过 Windows 捕获系统关闭请求,以便我可以自己处理多进程的关闭?
nabble.com页面建议使用win32api.SetConsoleCtrlHandler
:
“当 Windows 关闭时,我需要做一些事情,比如有人按下电源按钮。我相信这是一个窗口消息,WM_QUERYENDSESSION 或 WM_ENDSESSION。我找不到任何方法可以在 python 中捕获它。atexit() 不起作用。使用信号模块捕获 SIGBREAK 或 SIGTERM 也不起作用。”<br> 您可以使用 win32api.SetConsoleCtrlHandler 并捕获发送到控制台的 CTRL_SHUTDOWN_EVENT。
另请参阅 Python windows 关闭事件,其中说,“使用 win32api.setConsoleCtrlHandler() 时,我能够从 Windows 接收关闭/注销/等事件,并干净地关闭我的应用程序”等。