python - 如何在cygwin中运行的python中拦截ctrl + c命令

标签 python python-2.7 cygwin

我在 cygwin shell 中运行 python 脚本,但我无法拦截 ctrl + c 命令。

这是我的python脚本:

#!/cygdrive/c/python27/python.exe -u
import signal
import sys
def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGBREAK, signal_handler)

print('Press Ctrl+C')
input()

同样使用 try/catch 方法仍然不起作用
#!/cygdrive/c/python27/python.exe -u
try:
    input()
except KeyboardInterrupt:
    print('Interrupted')

但是这些处理程序都不能与 ctrl + c 命令一起使用。 Cygwin 版本是 1.7.25(0.270/5/3),我使用的是 python 2.7。怎么了?

最佳答案

我在 mingw64 终端的 MSYS 环境( https://www.msys2.org/ )中遇到了同样的问题。我终于能够使用 winpty 解决这个问题工具:

winpty python3 my_python_script.py
这样信号处理程序按预期工作。我只是不确定 winpty 是否工具也可在您的 cygwin 发行版中使用。

关于python - 如何在cygwin中运行的python中拦截ctrl + c命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55648031/

相关文章:

python - 如何检查列表中的连续负数或正数以及Python中的条件?

java - Windows 上的 Hadoop 在启动数据节点时出现 Eclipse 错误

python - 未绑定(bind)本地错误 : local variable 'player' referenced before assignment

javascript - POST 未收到正确响应

python - IO 错误 [Errno 2]

python - 使用selenium在多个浏览器上同时运行python SCRIPT

python - 如何在没有微秒的情况下在django中添加DateTimeField

python - 匹配两个 Python 列表的长度

python - 如何使用 bake 安装和构建 NS-3

windows - 如何为 apt-cyg 设置代理?