Come impedire l'applicazione della console di terminazione quando si preme "ctrl + c" in c?

StackOverflow https://stackoverflow.com//questions/20047228

  •  26-12-2019
  •  | 
  •  

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 ?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top