【问题标题】:How can I override the keyboard interrupt? (Python)如何覆盖键盘中断? (Python)
【发布时间】:2011-08-09 01:26:17
【问题描述】:

当脚本运行时Ctrl+c 被点击时,我是否可以让我的脚本执行我的功能之一?

【问题讨论】:

标签: python signals interrupt


【解决方案1】:

当然。

try:
  # Your normal block of code
except KeyboardInterrupt:
  # Your code which is executed when CTRL+C is pressed.
finally:
  # Your code which is always executed.

【讨论】:

    【解决方案2】:

    看看signal handlers。 CTRL-C 对应于SIGINT(posix 系统上的信号#2)。

    例子:

    #!/usr/bin/env python
    import signal
    import sys
    def signal_handler(signal, frame):
        print 'You pressed Ctrl+C - or killed me with -2'
        sys.exit(0)
    signal.signal(signal.SIGINT, signal_handler)
    print 'Press Ctrl+C'
    signal.pause()
    

    【讨论】:

    • 注意:当你在操作系统中使用kill -2 [pid] 时,这个也应该触发信号处理程序
    • @wim,好点子,谢谢,在我的回答中添加了一个提示 - 实际上有没有办法区分键盘击杀和击杀击杀?
    • 我见过前者会在python中引发KeyboardInterrupt异常,后者不会。但我不确定为什么会这样的实施细节。
    【解决方案3】:

    使用KeyboardInterrupt exception 并在except 块中调用您的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2020-09-10
      • 2011-04-12
      • 2020-10-02
      相关资源
      最近更新 更多