按CTRL + C退出Python程序

1 投票
1 回答
13887 浏览
提问于 2025-04-18 10:25

我想写一段代码,让程序在任何地方按下 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 这个信号是无法被捕获的。

撰写回答