如何在 Windows 上捕捉 PyCharm 中的停止按钮?
How to catch the stop button in PyCharm on Windows?
我想创建一个程序来执行某些操作,其中有人通过单击 PyCharm 中的停止按钮来终止脚本。我试过了
from sys import exit
def handler(signal_received, frame):
# Handle any cleanup here
print('SIGINT or CTRL-C detected. Exiting gracefully')
exit(0)
if __name__ == '__main__':
signal(SIGINT, handler)
print('Running. Press CTRL-C to exit.')
while True:
# Do nothing and hog CPU forever until SIGINT received.
pass
来自 https://www.devdungeon.com/content/python-catch-sigint-ctrl-c.
我试过 Mac 和 Windows。在 Mac 上,PyCharm 的行为符合预期,当我单击停止按钮时,它会捕获 SIGINT。但是在 Windows 上,我做了完全一样的事情,但是直接 returns 给我一个
Process finished with exit code -1
。我可以做些什么来改变 Windows 的行为就像 Mac 上的行为一样吗?
感谢任何帮助!
我不认为这是一个奇怪的问题。在 unix 系统上,pycham 发送一个 SIGTERM,等待一秒钟,然后发送一个 SIGKILL。在 windows 上,它做了一些其他事情来结束进程,这似乎是无法捕获的。即使在开发期间,您也需要一种方法来彻底关闭使用本机资源的进程。在我的例子中,有一个 CAN 控制器,如果没有正确关闭,就永远无法再次打开。我的解决方法是构建一个简单的 UI,带有一个停止按钮,可以干净地关闭进程。问题是,出于习惯,使用 pycharm、goland 和 intellij 只是点击红色方形按钮。每次我这样做时,我都必须重新启动开发系统。所以我认为这显然也是一个开发时间问题。
这其实不是一件简单的事情,因为PyCharm用停止按钮发送SIGKILL。查看这里的讨论 https://youtrack.jetbrains.com/issue/PY-13316
有评论说您可以启用“温和地终止 windows 进程”,但它对我不起作用。有效的方法是在调试配置中模拟终端,然后在 select 控制台 window
时使用 control c
我想创建一个程序来执行某些操作,其中有人通过单击 PyCharm 中的停止按钮来终止脚本。我试过了
from sys import exit
def handler(signal_received, frame):
# Handle any cleanup here
print('SIGINT or CTRL-C detected. Exiting gracefully')
exit(0)
if __name__ == '__main__':
signal(SIGINT, handler)
print('Running. Press CTRL-C to exit.')
while True:
# Do nothing and hog CPU forever until SIGINT received.
pass
来自 https://www.devdungeon.com/content/python-catch-sigint-ctrl-c.
我试过 Mac 和 Windows。在 Mac 上,PyCharm 的行为符合预期,当我单击停止按钮时,它会捕获 SIGINT。但是在 Windows 上,我做了完全一样的事情,但是直接 returns 给我一个
Process finished with exit code -1
。我可以做些什么来改变 Windows 的行为就像 Mac 上的行为一样吗?
感谢任何帮助!
我不认为这是一个奇怪的问题。在 unix 系统上,pycham 发送一个 SIGTERM,等待一秒钟,然后发送一个 SIGKILL。在 windows 上,它做了一些其他事情来结束进程,这似乎是无法捕获的。即使在开发期间,您也需要一种方法来彻底关闭使用本机资源的进程。在我的例子中,有一个 CAN 控制器,如果没有正确关闭,就永远无法再次打开。我的解决方法是构建一个简单的 UI,带有一个停止按钮,可以干净地关闭进程。问题是,出于习惯,使用 pycharm、goland 和 intellij 只是点击红色方形按钮。每次我这样做时,我都必须重新启动开发系统。所以我认为这显然也是一个开发时间问题。
这其实不是一件简单的事情,因为PyCharm用停止按钮发送SIGKILL。查看这里的讨论 https://youtrack.jetbrains.com/issue/PY-13316
有评论说您可以启用“温和地终止 windows 进程”,但它对我不起作用。有效的方法是在调试配置中模拟终端,然后在 select 控制台 window
时使用 control c