首页 > 解决方案 > Python,如何在 Windows 中处理信号

问题描述

这是专门针对 Windows 的,我在基于 linux 的系统上没有这个问题。

所以,我有一个程序在运行时创建子进程。如果程序正常退出,甚至出现异常或 ctrl+c 事件,这些子进程将正确终止,通过使用tryand KeyboardInterruptand finallyinif __name__ == '__main__':

但是,如果我在中间杀死程序,我说的是PyCharm使用STOP按钮杀死它。这些子流程不会终止。我不确定这个STOP按钮在 Windows 上发送什么信号。

我尝试使用signal.signal(signal.SIGTERM, handler). 它不起作用,我已经尝试过SIGTERM,,SIGINTSIGKILL,,在信号处理程序CTRL_C_EVENTCTRL_BREAK_EVENT不起作用。)。它们都不起作用。我也读过这篇文章:How to handle the signal in python on windows machine

在这种情况下如何优雅地退出?PyCharm 场景中的这个STOP按钮。

标签: pythonwindowssubprocesssignalssignal-handling

解决方案


推荐阅读