在Python中,我编写了以下代码,看看我是否可以让我的程序不像所有那些花哨的终端应用程序(如Vim或Dwarf Fortress)那样在Control + C上终止。
def getinput():
x = input('enter something: ')
while True:
try:
getinput()
except KeyboardInterrupt:
pass
不幸的是,在Windows控制台中,此脚本会在几秒钟后终止。如果我在IDLE中运行它,它会按预期工作。 Python版本是3.2.1,3.2的行为相同。我做错了吗?
编辑:如果我按住Control + C,那就是。
答案 0 :(得分:2)
为了不在Control-C
终止,您需要设置信号处理程序。
来自Python文档here
Python安装少量 信号处理程序默认情况下:SIGPIPE是 忽略(所以在管道上写错误 套接字可以报告为普通的 Python例外)和SIGINT是 翻译成KeyboardInterrupt 例外。所有这些都可以 重写的。
因此,您需要安装一个信号处理程序来捕获SIGINT
信号并在此处执行您想要的操作。
IDLE的行为可能是他们安装了一个阻止应用程序退出的处理程序。