import signal
import sys
import time
def sigint_handler(signal, frame):
print "signal"
sys.exit(0)
signal.signal(signal.SIGINT, sigint_handler)
while 1:
try:
print "text"
time.sleep(2)
except KeyboardInterrupt:
print "keybi"
exit(0)
except:
print "except"
continue
当我按 Ctrl-C 时,我看到“信号”和“除外”并且程序没有退出。
sys.exit(0)
时,为什么程序没有退出? KeyboardInterrupt
部分? except:
案例而不退出的简洁方法? 最佳答案
程序不会退出,因为 sys.exit
是通过抛出 SystemExit
异常来工作的,并且您的整体 except
捕获了它。except KeyboardInterrupt
不会触发,因为您安装的SIGINT
处理程序会覆盖默认的SIGINT
处理程序,并且当您按下Ctrl-C时,默认的SIGINT
处理程序负责引发KeyboardInterrupt
。
至于你的第三个问题,不清楚你问的是什么。
关于python - Python 中的 SIGINT 和异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36514336/