当我在Python应用程序中(例如Python Shell)时,按下ctrl + \会导致
>>> Quit (core dumped)
为什么会这样,我应该怎么避免这个问题?
每次我意外按下ctrl + \组合键时,应用程序崩溃非常不方便。CTRL-\是Linux键盘上触发QUIT
信号的按键。通常情况下,该信号会导致程序终止并转储核心。这是UNIX和Linux的特性,与Python完全无关。(例如,尝试sleep 30
然后按CTRL-\键。)
如果您想禁用这个功能,请使用stty命令。
在Python启动之前,在Linux命令行中操作:
stty quit undef
quit
被undef
了,IPython仍然会退出。 - zeawoasPython模块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)
只需向信号添加处理程序(在此情况下)不执行任何操作即可。
CTRL + \
是发送信号SIGQUIT
到前台进程的默认快捷键。默认情况下,SIGQUIT
会导致核心转储。更多信息请参阅man kill
。如果您希望,可以从终端首选项中删除此快捷键。 - Maciej Golsudo
,因为以这种方式退出ipython
会改变stty
的输出。 - darw