当程序被 ctrl-c 中止时,实际引发了 KeyboardInterrupt 异常,导致程序退出。

方法一:

捕获 KeyboardInterrupt 并进行相应处理。

方法二:

使用 signal

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import signal
  4. import sys
  5. import time
  6. def signal_handler(signal, frame):
  7. # 这里可以做一些处理然后 sys.exit(0) 退出,或者什么都不做让程序无法被 ctrl-c 中止。
  8. print('强制退出。。。')
  9. sys.exit(0)
  10. def loop_func():
  11. signal.signal(signal.SIGINT, signal_handler) # 这里仅捕获 ctrl-c 信号
  12. for i in range(100):
  13. time.sleep(2)
  14. print(i)
  15. if __name__ == '__main__':
  16. loop_func()

signal 模块的其他用法参考 Python 官方文档中的 signal (暂未被翻译成中文)
https://docs.python.org/zh-cn/3/library/signal.html?highlight=signal#module-signal