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