# Ctrl-C not clearing prompt in terminal (with EPD?) #625

Closed
opened this Issue Jul 26, 2011 · 13 comments

None yet

### 8 participants

Member
 As reported by EPD users on the mailing list, Ctrl-C no longer works to clear a prompt in the terminal. One user has apparently tried this with a newer checkout from git, but sees the same problem. This has affected one Linux and one Windows user, but I can't replicate it on Linux. Expected behaviour: In [1]: cd something_wrong KeyboardInterrupt In [1]:  N.B. It seems Ctrl-C does still work to interrupt running commands.
commented Jul 26, 2011

The Pylab shortcut installed by EPD is somewhat intricate. I've tested how Ctrl-C behaves when starting with a plain "ipython". This is on Windows 7 64-bit, EPD 7.1 with Python 2.7.2 and IPython 0.11.dev (2011-07-26).

Ctrl-C does give the expected KeyboardInterrupt message, but in fact leaves you at a Windows cmd.exe command line. Strange things happen with the process tree in the task manager, and with the processing of console input. To reproduce:

## 1. Starting the Windows command line

Winkey-R (Run) > cmd
The process explorer now shows "explorer.exe > cmd.exe".

## 2. Starting IPython

C:\temp\testing>ipython
Python 2.7.2 |EPD 7.1-1 (64-bit)| (default, Jul 3 2011, 15:34:33) [MSC v.1500 64 bit (AMD64)]
IPython 0.11.dev -- An enhanced Interactive Python.

The process explorer now shows:
explorer.exe
cmd.exe
ipython.exe
python.exe

## 3. Press Ctrl-C

In [1]: ^C
C:\Users\jonvi>
KeyboardInterrupt
In [1]:

The process explorer now shows:
explorer.exe
cmd.exe
python.exe
...as if ipython.exe was killed, orphaning the python.exe process.

## 4. Stuck in cmd.exe

Although the prompt looks innocuous at first, input actually goes to cmd.exe:
In [1]: 2+2
2+2 is not recognized as an internal or external command, operable program or batch file.
C:\Users\jonvi>

## 5. exit

One might try to "exit" cmd.exe. This sometimes works (but see below), leaving the process explorer showing:
explorer.exe
python.exe

Pressing Enter again returns to IPython (python.exe, not ipython.exe) and stuff works normally.
In [2]: 2+2
Out[2]: 4
In [3]: exit
...exits normally.

## However, sometimes the input processing of cmd.exe gets erratic:

C:\Users\jonvi>ipython
In [1]: ^C
C:\Users\jonvi>
KeyboardInterrupt
In [1]: 2+2
2+2 gjenkjennes ikke som en intern eller ekstern kommando,
kjørbart program eller satsvis fil.
C:\Users\jonvi>
// On pressing "e", everything back to the last "In [1]:" gets deleted.
In [1]: exit
xit is not recognized as an internal or external command, operable program or batch file.
C:\Users\jonvi>
// Yes, that's "xit" with no "e".
// Pressing "e" again deletes everything back to "In [1]:e".
// Finishing with "xit" gives this:
In [1]: eexit
xit is not recognized as an internal or external command, operable program or batch file.
// Pressing Enter twice gives this:
In [1]: ee
NameError: name 'ee' is not defined

I'm not sure what determines whether keyboard input gets mangled. For a while I thought it had to do with whether I typed anything before Ctrl-C, whether I entered anything before "exit", or whether I waited a little while (to put together this bug report) -- but unfortunately I seem unable to predict which of the two scenarios will happen.

commented Jul 26, 2011

## ipython qtconsole

Here Ctrl-C on the command line just gets ignored. It works fine for interrupting code, though.
In [1]: while True: pass
KeyboardInterrupt:

Member
 On the Qt console, Ctrl-C doesn't do anything while you're entering code. Esc or Ctrl-G will clear the current cell. This is intentional. As for the Windows thing, I have no idea. Does the same thing happen outside EPD, e.g. if you run python.exe C:\Path\to\ipython.py? Is ipython.exe something the setup process creates, or something Enthought produce?
Contributor
 Actually, Ctrl-C copies when you're entering code in the Qt console, and interrupts when you're executing code. We made Ctrl-C context sensitive as a compromise between the conflicting conventions in GUI and console applications.
commented Jul 26, 2011
 On Tue, Jul 26, 2011 at 4:06 PM, takluyver reply@reply.github.com wrote: On the Qt console, Ctrl-C doesn't do anything while you're entering code. Esc or Ctrl-G will clear the current cell. This is intentional. Sounds reasonable, works as advertised. As for the Windows thing, I have no idea. Does the same thing happen outside EPD, e.g. if you run python.exe C:\Path\to\ipython.py? Huh. As it turns out, "python -m ipython" handles Ctrl-C just fine: Microsoft Windows [Versjon 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Med enerett. C:\Users\jonvi>python -m ipython Python 2.7.2 |EPD 7.1-1 (64-bit)| (default, Jul 3 2011, 15:34:33) [MSC v.1500 64 bit (AMD64)] IPython 0.11.dev -- An enhanced Interactive Python. In [1]: 2+2 Out[1]: 4 In [2]: Pressing Ctrl-C now... KeyboardInterrupt In [2]: 2+2 Out[2]: 4 In [3]: ølkjsadfadfsø KeyboardInterrupt In [3]: In [4]: exit Works fine in Pylab mode too: c:\Python27\Scripts>python -m ipython --pylab Welcome to pylab, a matplotlib-based Python environment [backend: WXAgg]. In [1]: 2+2 Out[1]: 4 In [2]: Pressing Ctrl-C now...Nothing happens File "", line 1 Pressing Ctrl-C now...Nothing happens ^ SyntaxError: invalid syntax It does indeed seem that EPD can avoid the weird Ctrl-C behaviour just by simplifying their shortcut. I'll post a message to epd-users@enthought.com pointing here. Is ipython.exe something the setup process creates, or something Enthought produce? I'm not sure, and unfortunately I have no convenient way to check. For what it's worth, ipython.exe is in the python Scripts directory, which is in my PATH. c:\Python27\Scripts>dir ipython* Innhold i c:\Python27\Scripts 2011-07-26 13:21 340 ipython-qtconsole-script.pyw 2011-07-26 13:21 7 168 ipython-qtconsole.exe 2011-07-26 13:21 327 ipython-script.py 2011-07-26 13:21 7 168 ipython.exe EDIT: There is an ipython.bat too, but that one I wrote myself.
Member
 Thanks, Jon. For now I think it looks like the Ctrl-C behaviour is somehow related to EPD. Let us know what you hear from them.
commented Jul 26, 2011
 Message posted here: http://article.gmane.org/gmane.comp.python.epd.user/332 It seems you need to be subscribed to post; subscription info is here: https://mail.enthought.com/mailman/listinfo/epd-users
 I'm using EPD 7.1-2 ipython on OS X, and CTRL-C doesn't work for me.
 I have this problem on windows and am using standard ipython, 0.11 not enthought. if i execute ipython from the windows dos like prompt it has this problem but does not when run from the icon i have pinned. I think the windows terminal also receives the interrupt and starts capturing input itself. My guess is that there is some call back to say "i got this one" that is not being made by ipython when it handles the signal. I have cywin installed but this happens with and without cygwin enabled. Thanks for the tips about using task manager for a fix. I hope to at least save some data! I am happy to install from github and test.
Member
commented Nov 17, 2011
 The Windows bug of ctrl-C breaking the shell when run from cmd appears to be caused by setuptools when it creates the ipython.exe. If you do python C:\Python27\Scripts\ipython-script.py it seems to avoid the issue.
 thanks @minrk ! the ctrl-c bug was driving me crazy.
 The problem on windows 7 64bit running ipython 0.11 python 2.7 happens when ipython is run directly by typing 'ipython' at the windows or cygwin prompt. Python installed on windows, not through cygwin setup.exe does not know about cygwin so you need to give it the windows path of the script file, but after ipython starts when run from cygwin you are able to use the gnu commands with bang ( !stat file,!ls, !egrep -v '^\$|^ *#' myfile.py , etc)  C:\Python27\python.exe "C:\Python27\scripts\ipython-script.py"   /cygdrive/c/Python27/python.exe 'C:\\Python27\\Scripts\\ipython-script.py' 
removed the prio-medium label Jan 14, 2015
Member
commented Jul 21, 2016
 With this issue being 5 years old, the lack of activity, and all the recent refactor I'll assume this is either fixed, or need a new issue to be reopened. Thanks all, and closing to try to keep issue list small. Thanks !
closed this Jul 21, 2016
modified the milestone: no action, wishlist Jan 9, 2017