Cosa succede quando si chiude un c ++ applicazione console
-
22-08-2019 - |
Domanda
Credo che la domanda dice tutto, ma, cosa succede se qualcuno si chiude una console app C ++? Come in, fa clic sul "x" nell'angolo in alto. Ha immediatamente chiudere? Ha gettare una sorta di eccezione? E 'un comportamento indefinito?
Soluzione
La chiusura di un c ++ console app con la "x" nell'angolo in alto genera CTRL_CLOSE_EVENT
che si poteva prendere e di processo, se si imposta un gestore di controllo utilizzando il funzione SetConsoleCtrlHandler . Lì si poteva ignorare la stretta funzionalità ed eseguire qualunque cosa si voleva fare, e quindi opzionalmente comunque eseguire il comportamento predefinito.
Altri suggerimenti
Immagino che il processo di console appena viene ucciso senza tanti complimenti da parte del sistema operativo. Se si vuole intrappolare questo evento e fare qualcosa sembra che il funzione SetConsoleCtrlHandler è il modo per farlo.
Vedi anche:
Su altri sistemi Unix Linux e, la console viene eseguito come un processo separato. Come si chiude la shell, invia il segnale SIGHUP al processo attualmente attivo o processi che non vengono eseguite in background. Se il programmatore non gestirlo, il processo termina semplicemente. Lo stesso segnale viene inviato se si chiude la sessione SSH con un terminale e un processo attivo.
SIGBREAK
è sollevata su Windows.