我在 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/