Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does pressing Ctrl-backslash result in core dump?

When I'm in a python application (the python shell, for instance), pressing ctrl + \ results in

>>> Quit (core dumped)

Why is this, and how can I avoid this? It is very inconvenient if application bails out whenever I press ctrl + \ by accident.

like image 579
chtenb Avatar asked Oct 08 '13 13:10

chtenb


2 Answers

CTRL-\ is the Linux key that generates the QUIT signal. Generally, that signal causes a program to terminate and dump core. This is a feature of UNIX and Linux, wholly unrelated to Python. (For example, try sleep 30 followed by CTRL-\.)

If you want to disable that feature, use the stty command.

From the Linux command line, before Python starts:

stty quit undef
like image 70
Robᵩ Avatar answered Oct 24 '22 07:10

Robᵩ


The python module signal is convenient to deal with this.

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)

Just add handlers to the signal that (in this case) do nothing.

like image 12
chtenb Avatar answered Oct 24 '22 07:10

chtenb