python错误抑制信号18到win32

Vin*_*ang 7 python winapi stdin signals

我用以下代码创建了一个简单的test.py:

import sys
res = sys.stdin.read()
print(res)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试跑步时

python test.py
Run Code Online (Sandbox Code Playgroud)

然后我输入

hello
Run Code Online (Sandbox Code Playgroud)

并通过Ctrl+ 结束输入z,我得到以下消息:

4 [sig] bash 11516! sigpacket::process: Suppressing signal 18 to win32 process (pid 10620)
Run Code Online (Sandbox Code Playgroud)

我不知道出什么问题了。

屏幕截图

the*_*heB 5

信号18只是Ctrl+ 的处理程序Z。(从技术上讲,它映射到SIGTSTP。)该信号告诉进程暂停。由于该信号通常对Windows进程没有意义,因此git-bash会禁止显示该消息,但仍会让您知道它已禁止了该信号。

不幸的是,默认的git-bash终端MinTTY无法为本机Windows控制台应用程序正确连接控制台。因此,即使忽略警告消息,python解释器也无法正常工作。(更多信息)

为了正确连接python,您需要使用它winpty来启动python。命令:

winpty python test.py
Run Code Online (Sandbox Code Playgroud)

将工作。如果需要访问git命令,也可以使用git-cmd;如果不需要,则可以打开标准Windows命令提示符并在其中运行python。

  • 如果您的终端卡在“[sig] bash 11516!” sigpacket::process:抑制信号 18 到 win32 process`,只需在终端中输入“hello”之类的内容,然后按 Enter 键。任何 Ctrl- 命令都不起作用。这就是我真正提出这个问题的目的。 (2认同)