【问题标题】:Input() blocks IDE from stopping a programInput() 阻止 IDE 停止程序
【发布时间】:2021-10-14 18:55:35
【问题描述】:

我有一个带有控制台菜单的程序。我使用input() 来获取用户输入。但是当我想在 PyCharm 中强制重启/终止程序执行或完全关闭 IDE 时,程序会一直运行,直到我输入任何内容。

这个 sn-p 是精简版:

while True:
    inp = input()
    if inp == 'hi':
        print('hello there')

    elif inp == 'exit':
        break

    else:
        print('unknown command')

并在控制台中打印出来:

键盘中断

进程以退出代码 -1073741510 结束(0xC000013A:被 Ctrl+C 中断)

我做了一些研究:

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

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

【问题讨论】:

    标签: python python-3.x input pycharm user-input


    【解决方案1】:

    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,而不是像以前那样终止进程

    【讨论】:

    猜你喜欢
    • 2018-01-15
    • 2014-09-03
    • 2012-09-07
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2015-04-21
    相关资源
    最近更新 更多