obl*_*ong 9 python powershell exit
在 Powershell/命令提示符中使用 Ctrl-C 时,Python 无法退出,而是给出“KeyboardInterrupt”字符串。
最近我重新安装了 Windows 10。在重新安装之前 Ctrl-C 退出 python (3.5/2.7) 很好,没有输出。
有谁知道为什么会这样?是否只是一个简单的设置?
我能想到的唯一区别是我现在使用的是 python 3.6。Ctrl-D 在 Windows 上的 Ubuntu 上的 Bash 中工作,而 Ctrl-C 在激活的 anaconda python2 环境中工作正常以退出 python。
小智 15
我在 Windows 10 Pro Build 18363 和 Python 3.8.1 上遇到了这个问题。我正在运行一些 python 脚本,无法用 停止一些脚本CTRL + C,但CTRL + BREAK每次都工作。Windows Docs是这样说的:
CTRL+C 和 CTRL+BREAK 组合键由控制台进程进行特殊处理。默认情况下,当控制台窗口具有键盘焦点时,CTRL+C 或 CTRL+BREAK 被视为信号(SIGINT 或 SIGBREAK)而不是键盘输入...
CTRL+BREAK 始终被视为信号,但应用程序可以通过两种方式更改默认的 CTRL+C 行为,以防止调用处理程序函数:
- SetConsoleMode 函数可以禁用控制台输入缓冲区的 ENABLE_PROCESSED_INPUT 输入模式,因此 CTRL+C 报告为键盘输入而不是信号。
- 当 SetConsoleCtrlHandler 以其参数的 NULL 和 TRUE 值被调用时,调用过程会忽略 CTRL+C 信号。通过使用 NULL 和 FALSE 值调用 SetConsoleCtrlHandler 可以恢复正常的 CTRL+C 处理。这个忽略或不忽略 CTRL+C 信号的属性是由子进程继承的,但它可以被任何进程启用或禁用,而不会影响现有进程。
因此,CTRL + C似乎是一个 SIGINT 并且它的操作可以由您正在运行的程序修改。似乎 Windows 上的 Python 已经以一种CTRL + C被处理为键盘输入而不是我们期望的 SIGINT的方式进行编码。幸运的是,我的CTRL + BREAK键盘上有按键,而且每次都可以使用。
对于那些没有BREAK键盘的人,您可以使用 Windows On Screen 虚拟键盘。
win key + r打开运行应用程序。osk并按确定ctrl + ScrLk,这应该会终止程序。如果在虚拟键盘上不起作用,此堆栈线程还有一些其他方法您可以尝试ctrl + ScrLk。
这是最近出现在 Windows 10 Insider build 15002 中的一个错误。
解决方法是将映射键从 Ctrl C 更改为 Ctrl K 等
如果您不熟悉如何执行此操作,您可以查找或查看stty -a
您可以在每个 bash 会话上运行此命令,将您的 Terminate 映射到 Ctrl + K
stty intr \^k
Run Code Online (Sandbox Code Playgroud)
作为 TEMP 解决方案,您可以将其包含在 Bashrc 中,以便在每个新会话上执行它
此错误已在 Github 上报告#1569
| 归档时间: |
|
| 查看次数: |
20479 次 |
| 最近记录: |