按CTRL + C退出Python程序
我想写一段代码,让程序在任何地方按下 CTRL + C 时能够退出,但遇到了一些问题。网上大多数的帮助都提到信号和其他复杂的东西,这些可能和我想要的并不相关。如果可以的话,能跳过这些部分,直接给我一个解决方案吗?
import signal
import time
def sigint_handler(signum, frame):
print 'Stop pressing the CTRL+C!'
signal.signal(signal.SIGINT, sigint_handler)
目标:
按下 ctrl + c 应该直接退出程序
1 个回答
12
你可以在代码中使用一个尝试/捕获的方式来处理 KeyboardInterrupt
,也就是当你按下 Ctrl+C 时的情况:
try:
while True:
print 1
except KeyboardInterrupt:
print "test"
另外,如果这个程序被强制终止,你会收到一个 SIGTERM
信号,这是通过 KILL 命令发送的:
正如你所提到的,你可以定义一个处理函数来处理这个信号: signal.signal(signal.SIGTERM, my_signal_term_handler)
这里有一份所有 UNIX 信号的列表,可以参考一下: http://en.wikipedia.org/wiki/Unix_signal#POSIX_signals。需要注意的是,SIGKILL 这个信号是无法被捕获的。