Qué sucede cuando cierras una aplicación de consola de C ++

Supongo que la pregunta lo dice todo, pero, ¿qué sucede si alguien cierra una aplicación de consola de C ++? Al igual que en, haga clic en la “x” en la esquina superior. ¿Se cierra al instante? ¿Lanza algún tipo de excepción? ¿Es un comportamiento indefinido?

Al cerrar una aplicación de consola de C ++ con la “x” en la esquina superior lanza un CTRL_CLOSE_EVENT que podría capturar y procesar si establece un controlador de control utilizando la función SetConsoleCtrlHandler . Allí, puede anular la funcionalidad cercana y realizar lo que desee, y opcionalmente seguir realizando el comportamiento predeterminado.

Imagino que el proceso de consola acaba siendo asesinado sin ceremonias por el sistema operativo. Si quiere atrapar este evento y hacer algo, parece que la función SetConsoleCtrlHandler es la manera de hacerlo.

Ver también:

  • Cómo manejar una señal ctrl-break en una interfaz de línea de comando
  • Manejo de eventos de consola

En Linux y otros sistemas Unix, la consola se ejecuta como un proceso separado. Cuando cierra el shell, envía la señal SIGHUP al proceso actualmente activo o procesos que no se ejecutan en segundo plano. Si el progtwigdor no lo maneja, el proceso simplemente termina. Se envía la misma señal si cierra la sesión SSH con un terminal y un proceso activo.

SIGBREAK se SIGBREAK en Windows.