Python处理系统关闭

时间:2012-12-17 12:48:58

标签: python windows events multiprocessing shutdown

我有一个多处理的python应用程序,它在Windows上作为EXE运行。在选择关闭操作系统时,由于进程被关闭,应用程序会抛出许多异常。

有没有办法通过Windows捕获系统关闭请求,这样我可以自己处理多进程的关闭?

1 个答案:

答案 0 :(得分:5)

nabble.com页面建议使用win32api.SetConsoleCtrlHandler

  

“当窗户关闭时,我需要做一些事情,就像有人按下电源按钮一样。我相信这是一个窗口消息,WM_QUERYENDSESSION或WM_ENDSESSION。我找不到任何方法来捕获这个在python中。 atexit()不起作用。使用信号模块捕获SIGBREAK或SIGTERM也不起作用。“
  您可以使用win32api.SetConsoleCtrlHandler并捕获发送到控制台的CTRL_SHUTDOWN_EVENT。

另请参阅Python windows shutdown events,其中说“使用win32api.setConsoleCtrlHandler()时,我可以从Windows接收关闭/注销/等事件,并干净地关闭我的应用程序”等。