2011-01-17 10 views

Respuesta

18

parece ser un error aún no resuelto: bug 159803 (resuelto en septiembre de 2015, para CDT 9,0)

Desde Eclipse 3.1, es posible señalar EOF (usando CTRL + D/Z - vinculable en las preferencias de las teclas) en la vista de consola, y lo probé con éxito con Eclipse 3.2.1 usando una simple aplicación de Java.
CDT por el contrario no reconocerá EOF cuando esté en la vista de la consola.
Hay una excepción, aunque.

Si me quedo un C/C++ Aplicación local y desactive "Connect process input & output to a terminal" en la pestaña de configuración principal, la vista de la consola será EOF reconocer.

Sin embargo, este cambio no afecta a la vista de la consola en la perspectiva de depuración. Por lo tanto, durante la depuración todavía es imposible para mí enviar una señal EOF a la aplicación en ejecución.

Aunque se considera "resuelto", this comment muestra que el problema persiste.


Update 4 años después (diciembre de 2014), menciona Fernando Gonzalez-Sanchezin the comments:

casilla Solución ya no está disponible en la interfaz de usuario.
Problema que sigue sucediendo en OpenSUSE 12 & Eclipse CDT Luna 4.4.1.


actualizado en Marzo de 2015:

Muhammad Annaqeeb menciones in the comments:

Hay una new workaround mentioned in the bug page:

En Kepler 4,3 eclipse.buildId = 4.3.0.M20130911 -1000 en Linux, el problema todavía existe en la consola de Java.He encontrado la siguiente solución:

"Si sale de la consola para centrarse en otra vista, y luego volver a centrarse en la consola, a continuación, Ctrl - D (EOF) funciona como se espera."

+0

Sí, esto funciona, pero cuando desactivo "Conectar entrada y salida de proceso a un terminal" no puedo ver ninguna salida en la consola. – anon

+0

@Kedar: cierto, eso no es una solución perfecta ... – VonC

+1

¡el truco funcionó en mi caso! – KawaiKx

0

Una forma es posible considerar el envío CTRL + D para la consola está haciendo un poco de inyección BASH en sus argumentos del programa. añadiendo algo así como "& sleep 10 & & echo -e '\ x04 \ c'>/dev/stdin" por ejemplo esperará 10 segundos antes de enviar el comando ctrl-D. aunque también podrías modificarlo fácilmente para alguna otra condición no basada en tiempo. Además, puede abrir/dev/stdin desde su programa C++ como un archivo, luego escribir el valor 0x04 en él y luego enrasar para obtener el mismo efecto de su programa.

+0

En realidad, me acabo de dar cuenta de que es posible que desee escribir en "/ dev/console" en lugar de stdin –

2

actualización de 2015: Estoy usando eclipse luna 4.4.1 para mac y EOF todavía no funciona en la consola. Simplemente congela el eclipse.

5

Acabo de encontrar una solución a este problema:

Cuando haya terminado de introducir sus entradas en la consola, haga clic en otra ventana (editor, Explorador de proyectos, etc.), a continuación, haga clic de nuevo en la consola. Al presionar Ctrl + Z funcionará ahora.

+0

Esta solución funciona en Luna. –

+0

¡Este método funciona en Java (Eclipse Mars)! – partida

Cuestiones relacionadas