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)

我做了一些研究:

  1. -这可能是一个仅 IDE 的问题,因为...
  2. -启用“在输出控制台中模拟终端”可阻止此错误的发生。

但我认为这只是一种解决方法,我想详细了解为什么会发生这种情况。你也遇到过这种情况吗?

2021.2 PyCharm 尝试使用 WinP 优雅地终止 Windows 上的进程,而不是像以前那样杀死它们。这可能是一个合理的行为 - 一旦您单击“停止”一旦 Ctrl+C 应该发送,下一次单击“停止”应该终止该过程。它在 Linux 和 macOS(SIGINTSIGKILL)上以这种方式工作。不幸的是,新行为有一个导致一系列问题的错误。

在 IDE 中尝试以下操作以恢复到旧行为

  1. “帮助 | 查找操作 | 注册表”菜单
  2. 禁用use.winp.for.graceful.process.termination
  3. 重启PyCharm

在 PyCharm 的错误跟踪器中查看相关票证:

  • PY-50207 意外更改:“停止”按钮在 Windows 上发送 SIGINT,而不是像以前那样终止进程