Input() 阻止 IDE 停止程序
Input() blocks IDE from stopping a program
我有一个带有控制台菜单的程序。我使用 input()
来获取用户输入。但是当我想 force-restart/terminate 在 PyCharm 中执行程序或完全关闭 IDE 时,程序会保持 运行 直到我输入任何内容。
此代码段是精简版:
while True:
inp = input()
if inp == 'hi':
print('hello there')
elif inp == 'exit':
break
else:
print('unknown command')
并在控制台打印出来:
KeyboardInterrupt
Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)
我做了一些研究:
- -这可能是一个仅 IDE 的问题,因为...
- -启用“在输出控制台中模拟终端”可阻止此错误的发生。
但我认为这只是一种解决方法,我想详细了解为什么会发生这种情况。你也遇到过这种情况吗?
2021.2 PyCharm 尝试使用 WinP 优雅地终止 Windows 上的进程,而不是像以前那样杀死它们。这可能是一个合理的行为 - 一旦您单击“停止”一旦 Ctrl+C
应该发送,下一次单击“停止”应该终止该过程。它在 Linux 和 macOS(SIGINT
和 SIGKILL
)上以这种方式工作。不幸的是,新行为有一个导致一系列问题的错误。
在 IDE 中尝试以下操作以恢复到旧行为
- “帮助 | 查找操作 | 注册表”菜单
- 禁用
use.winp.for.graceful.process.termination
- 重启PyCharm
在 PyCharm 的错误跟踪器中查看相关票证:
- PY-50207 意外更改:“停止”按钮在 Windows 上发送 SIGINT,而不是像以前那样终止进程
我有一个带有控制台菜单的程序。我使用 input()
来获取用户输入。但是当我想 force-restart/terminate 在 PyCharm 中执行程序或完全关闭 IDE 时,程序会保持 运行 直到我输入任何内容。
此代码段是精简版:
while True:
inp = input()
if inp == 'hi':
print('hello there')
elif inp == 'exit':
break
else:
print('unknown command')
并在控制台打印出来:
KeyboardInterrupt
Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)
我做了一些研究:
- -这可能是一个仅 IDE 的问题,因为...
- -启用“在输出控制台中模拟终端”可阻止此错误的发生。
但我认为这只是一种解决方法,我想详细了解为什么会发生这种情况。你也遇到过这种情况吗?
2021.2 PyCharm 尝试使用 WinP 优雅地终止 Windows 上的进程,而不是像以前那样杀死它们。这可能是一个合理的行为 - 一旦您单击“停止”一旦 Ctrl+C
应该发送,下一次单击“停止”应该终止该过程。它在 Linux 和 macOS(SIGINT
和 SIGKILL
)上以这种方式工作。不幸的是,新行为有一个导致一系列问题的错误。
在 IDE 中尝试以下操作以恢复到旧行为
- “帮助 | 查找操作 | 注册表”菜单
- 禁用
use.winp.for.graceful.process.termination
- 重启PyCharm
在 PyCharm 的错误跟踪器中查看相关票证:
- PY-50207 意外更改:“停止”按钮在 Windows 上发送 SIGINT,而不是像以前那样终止进程