Escriba un programa en C que no termine cuando se presiona Ctrl+C

Escriba un programa en C que no termine cuando se presiona Ctrl+C. Imprime un mensaje «No se puede terminar con Ctrl+c» y continúa la ejecución. Podemos usar el manejo de señales en C para esto. Cuando se presiona Ctrl+C , se genera la señal SIGINT, podemos capturar esta señal y ejecutar nuestro controlador de señal definido. El estándar C define las siguientes 6 señales en el archivo de encabezado signal.h. SIGABRT – terminación anormal. SIGFPE: excepción de punto flotante. SIGILL: instrucción no válida. SIGINT – solicitud de atención interactiva enviada al programa. SIGSEGV: acceso a memoria no válido. SIGTERM: solicitud de finalización enviada al programa. Se especifican señales adicionales Unix y los sistemas operativos similares a Unix (como Linux) definen más de 15 señales adicionales. Ver http://en.wikipedia.org/wiki/Unix_signal#POSIX_signals La función de biblioteca C estándar signal() se puede usar para configurar un controlador para cualquiera de las señales anteriores. 

C

/* A C program that does not terminate when Ctrl+C is pressed */
#include <stdio.h>
#include <signal.h>
 
/* Signal Handler for SIGINT */
void sigintHandler(int sig_num)
{
    /* Reset handler to catch SIGINT next time.
    Refer http://en.cppreference.com/w/c/program/signal */
    signal(SIGINT, sigintHandler);
    printf("\n Cannot be terminated using Ctrl+C \n");
    fflush(stdout);
}
 
int main ()
{
    /* Set the SIGINT (Ctrl-C) signal handler to sigintHandler
    Refer http://en.cppreference.com/w/c/program/signal */
    signal(SIGINT, sigintHandler);
 
    /* Infinite loop */
    while(1)
    {        
    }
    return 0;
}

Salida: cuando se presiona Ctrl+C dos veces

 
 Cannot be terminated using Ctrl+C
 
 Cannot be terminated using Ctrl+C

Complejidad de tiempo : O(1)

Espacio Auxiliar: O(1)

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *