gpt4 book ai didi

python - 如何在 Windows 上捕获 PyCharm 中的停止按钮?

转载 作者:行者123 更新时间:2023-12-05 01:34:23 24 4
gpt4 key购买 nike

我想创建一个程序来执行某些操作,其中有人通过单击 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 上,我做了完全相同的事情,但它直接返回给我一个进程已完成,退出代码为 -1。我可以做些什么来改变 Windows 的行为就像在 Mac 上一样吗?

感谢任何帮助!

最佳答案

我不认为这是一个奇怪的问题。在 unix 系统上,pycham 发送一个 SIGTERM,等待一秒钟,然后发送一个 SIGKILL。在 Windows 上,它会做一些其他事情来结束进程,这似乎是无法解决的事情。即使在开发期间,您也需要一种方法来彻底关闭使用 native 资源的进程。在我的例子中,有一个 CAN Controller ,如果没有正确关闭,就永远无法再次打开。我的工作是构建一个带有停止按钮的简单 UI,该按钮可以干净地关闭进程。问题是,出于使用 pycharm、goland 和 intellij 的习惯,只需点击红色方形按钮即可。每次我这样做时,我都必须重新启动开发系统。所以我认为这显然也是一个开发时间问题。

关于python - 如何在 Windows 上捕获 PyCharm 中的停止按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63715045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com