为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2023-07-11 18:54:41
我想创建一个程序,该程序可以通过单击 PyCharm 中的停止按钮来终止脚本。我试过from sys import exitdef 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 上,我做了完全相同的事情,但它只是直接返回给我一个 Process finished with exit code -1. 我可以做些什么来改变以使 Windows 的行为与 Mac 上的行为相似吗?任何帮助表示赞赏!
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

我认为这根本不是一个奇怪的问题。在unix系统上,pycham发送一个SIGTERM,等待一秒钟,然后发送一个SIGKILL。在 Windows 上,它会执行其他操作来结束进程,这似乎是无法捕获的。即使在开发过程中,您也需要一种方法来彻底关闭使用本机资源的进程。就我而言,有一个 CAN 控制器,如果没有正确关闭,就无法再次打开。我的解决方法是构建一个简单的用户界面,其中包含一个停止按钮,可以彻底关闭进程。问题是,出于使用 pycharm、goland 和 intellij 的习惯,只需点击红色的方形按钮即可。每次我这样做时,我都必须重新启动开发系统。所以我认为这显然也是一个开发时间问题。



查看完整回答
反对 回复 2023-07-11
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这实际上不是一件简单的事情,因为 PyCharm 会通过停止按钮发送 SIGKILL。

有评论说你可以启用“轻柔地杀死Windows进程”,但它对我不起作用。有效的方法是在调试配置中模拟终端,然后在选择控制台窗口时使用 control c


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信