按下Ctrl-C时,Python脚本会避免退出

时间:2015-08-13 08:47:03

标签: python

我出于教育目的试图运行WifiPhisher。一步说它按Ctrl-C输入一个数字。现在,当我按下Ctrl-c时,脚本将按我在this issue on github中描述的那样退出。理想情况下,脚本不应该退出而应该在按下Ctrl-C后继续逻辑。我不熟悉Python,任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:8)

您可以设置signal handlerCTRL-C信号,以关闭提出signal handler例外的默认KeyboardInterrupt

import signal, os

def handler(signum, frame):
    print 'Signal handler called with signal', signum

# Set the signal handler
signal.signal(signal.SIGINT, handler)
  

Ctrl-C (在较旧的Unix中,DEL)发送INT信号(SIGINT);默认情况下,这会导致进程终止

     

SIGINT 当用户希望中断该过程时,SIGINT信号由其控制终端发送到进程。这通常是通过按Control-C启动的,但在某些系统上,可以使用“删除”字符或“中断”键。[6]

https://docs.python.org/2/library/signal.html

答案 1 :(得分:5)

您需要捕获KeyboardInterrupt并处理它。

真正基本的例子:

try:
    while True:
        print "Hello world"
except KeyboardInterrupt:
    print "Goodbye"
    exit(0)

答案 2 :(得分:0)

将此用于重复性任务。但是在 Linux 中,当按下 Ctrl-C 时它会显示“^C”。 (在 Windows Store 应用 Ubuntu 上测试,应该可以在很多平台上工作)

def repeat():
    try:
        import time
        x=0
        while x==0:
            print("This is text")
            time.sleep(0.1)
    except KeyboardInterrupt:
        repeat()
repeat()