在Python中,我编写了下面的代码,以查看我的程序是否可以像所有那些精美的terminal应用程序(如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行为一样。 难道我做错了什么?
编辑:如果我按住Ctrl + C,那就是。
为了不终止在Control-C
你需要设置一个信号处理程序。 从这里的Python文档
Python在默认情况下会安装少量的信号处理程序:SIGPIPE被忽略(所以管道和套接字上的写入错误可以作为普通的Python异常报告),SIGINT被转换为KeyboardInterrupt异常。 所有这些都可以被覆盖。
所以你需要安装一个信号处理程序来捕获SIGINT
信号,然后按照你的要求做。
与IDLE行为可能是他们有一个处理程序安装阻止应用程序退出。