Python计数键盘中断

时间:2015-02-06 19:38:24

标签: python

s = signal.signal(signal.SIGINT, signal.SIG_IGN)
os.wait()
signal.signal(signal.SIGINT, s)

目前,我有上述代码。如果有人想要输入疯狂的Ctrl+c

,那对我来说这很好

但我希望有一个任意计数而不是像上面那样不断忽略它。例如,如果我收到5 sys.exit(),我想os.wait()而不是让Ctrl+c继续。

那我怎么算ctrl+c

2 个答案:

答案 0 :(得分:1)

signal可以接受仿函数:

import signal
import sys

class S:
    cnt = 0

    def __call__(self, signum, frame):
        self.cnt += 1
        if (self.cnt == 5):
            sys.exit()

signal.signal(signal.SIGINT, S())

答案 1 :(得分:0)

你显然需要一个你增加的变量,并与之比较。

编辑:我没想到你能够处理信号但不能引入python变量,但是哦,好吧:

counter = 0
def handle_sigint(signal_number, _frame):
     if counter >= 5:
          sys.exit(-1) #or whatever you want
     else:
          counter += 1

signal.signal(signal.SIGINT, handle_sigint)