为什么按Ctrl-backslash会导致核心转储?

时间:2013-10-08 13:07:59

标签: python coredump backslash ctrl

当我在python应用程序(例如python shell)中时,按Ctrl\会导致

>>> Quit (core dumped)

为什么会这样,我该如何避免这种情况? 如果我偶然按下Ctrl\,应用程序就会失效,这是非常不方便的。

2 个答案:

答案 0 :(得分:25)

CTRL - \ 是生成QUIT信号的Linux密钥。通常,该信号会导致程序终止并转储核心。这是UNIX和Linux的一个特性,与Python完全无关。 (例如,尝试sleep 30后跟 CTRL - \ 。)

如果要禁用该功能,请使用stty命令。

从Linux命令行开始,在Python开始之前:

stty quit undef

答案 1 :(得分:6)

python模块signal可以方便地解决这个问题。

import signal

# Intercept ctrl-c, ctrl-\ and ctrl-z
def signal_handler(signal, frame):
    pass
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGQUIT, signal_handler)
signal.signal(signal.SIGTSTP, signal_handler)

只需将处理程序添加到(在这种情况下)什么都不做的信号中。