Come impedire l'applicazione della console di terminazione quando si preme "ctrl + c" in c?
Domanda
Ho trovato che l'applicazione della console compilata da GCC su Windows termini sempre quando si preme Ctrl + C .
C'è un modo possibile per impedire l'applicazione della console dalla terminazione quando si preme ctrl + c ?
Soluzione
Quando l'utente preme il controllo C, un segnale (SIGINT) viene inviato al processo.Quando la maggior parte dei segnali viene inviata a un processo, tale processo deve gestire il segnale o il sistema operativo lo ucciderà.Quindi ... tutto quello che devi fare è installare un gestore di segnale per SIGINT.
Il seguente è non testato:
#include <signal.h>
static void ignore_control_c(int sig)
{
/* re-arm the signal handler but otherwise ignore the signal */
signal(sig, ignore_control_c);
}
int main(int argc, char *argv)
{
signal(SIGINT, ignore_control_c);
...
. Altri suggerimenti
Installare un gestore SIGINT.Per impostazione predefinita, questo gestore è impostato per terminare il tuo processo.Per Windows, è possibile registrarsi utilizzando Win32-specifico SetConsoleCtrlHandler(..)
.
Dai un'occhiata alla documentazione legata sopra, e in particolare l'esempio.