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
?
答案 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)