[IPython-dev] Ctrl-C quitting ipython

Hans Meine hans_meine at gmx.net
Thu Nov 4 09:37:33 EDT 2010


Op den Dunnersdag 04 November 2010 Klock 07:19:41 hett Fernando Perez 
schreven:
> > - whether that would be annoying (don't know how noisy the result would
> > be) - whether we can catch exit() being called and at least report
> > "IPython noticed some extension/C-code called exit()", which would have
> > at least reduced the debugging time for us
> 
> Nope, unfortunately there's no way to catch that, to the best of my
> knowledge (would love to be proven wrong, though).

There would be a way with C code, but that's against ipython's design AFAICS:
One could write a tiny extension that uses atexit(3) to register a handler 
which prints a warning after checking a flag whether the exit was expected 
(initiated from IPython).

To a certain degree, it is possible to do the same with ctypes, but AFAICS the 
case in which python was shut down would make problems (since the handler 
would be implemented in python code, but the interpreter will already be shut 
down).

At least, sys.exit() / SystemExit is already caught.  However, I find it 
strange that %tb is announced, while it does not give a valuable result:

In [6]: sys.exit()
An exception has occurred, use %tb to see the full traceback.

SystemExit

To exit: use any of 'exit', 'quit', %Exit or Ctrl-D.

In [7]: %tb
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
IndexError: list index out of range

Have a nice day,
  Hans



More information about the IPython-dev mailing list