Nadie está explícitamente que esta diciendo, por lo que será:
Lo que se ve cuando se hace doble clic en el archivo es normales. Lo que hace su IDE (mantener la ventana abierta) es una característica para ayudarlo a depurar la aplicación.
¿Por qué es esto así?
Como está desarrollando una aplicación de consola, tiene que haber una consola para que su aplicación muestre su salida. Si todavía no hay ninguno, se crea una nueva consola (que es la ventana negra).
Si inicia su programa desde el interior de una consola (por ejemplo, desde cmd.exe
), simplemente heredará la consola del principal sin crear una nueva [1].
Después de que sale la última aplicación que usa la consola (que, en el primer caso es solo su programa), la consola se cierra. Notará esto todo el tiempo para aplicaciones de consola que imprimen nada más que un texto de ayuda cuando se ejecutan sin parámetros. Si hace doble clic en ellos desde el explorador, una ventana negra con texto parpadeará e inmediatamente se cerrará.
A veces, un programa que hace algo y los cierra de inmediato es lo que desea. Por ejemplo, puede llamar a estas aplicaciones desde scripts.
Por otro lado, su aplicación podría ser interactiva: esperar la entrada del usuario, hacer algo y solo salir cuando el usuario se lo indique. No es posible crear secuencias de comandos de estas aplicaciones, obviamente, ya que deberá tener un presente humano en el teclado para indicarle a la aplicación qué hacer.
ahora llegamos a la parte IDE: digamos que usted está desarrollando una aplicación de la primera clase, uno que hace algo y luego se cierra inmediatamente. No es muy conveniente que la pantalla parpadee y desaparezca cada vez que la ejecutes, porque ¿cómo puedes saber si el programa funcionó? Asumiendo que puedes decir esto desde la salida que genera.
Por supuesto, puede iniciar una ventana de línea de comandos y ejecutar la aplicación desde allí, pero el programa se ejecutará por separado desde el IDE, y perdería capacidades de depuración en vivo.
Por lo tanto, a los fabricantes de IDE se les ocurrió una función para las aplicaciones de consola: cuando ejecutas la aplicación directamente desde tu IDE, luego, generalmente esperan una pulsación de tecla. Esto le da la oportunidad de inspeccionar la ventana con la salida, para confirmar que la aplicación está funcionando correctamente.
[1] Esoterica: a menos que vaya a través de una aplicación que no hereda la consola. Cualquier aplicación de consola iniciada por esa aplicación no heredará la consola, ya que la aplicación GUI ha roto la herencia. Por ejemplo, start.exe
hace esto.Compare:
foo.exe (inherits the console)
start foo.exe (start.exe is a GUI app, so foo.exe is launched in a new console)
complemento: _asm int 3 – toto
Puede comprobar aquí [Mi respuesta a este problema] [1] http://stackoverflow.com/a/30826808/ 5007758 – Khalif21