Interceptar eventos Ctrl-C en C
Interceptar eventos Ctrl-C es una tarea necesaria en la programación, especialmente cuando se desea responder con elegancia a interrupciones inesperadas.
Uso de Sigaction
En C, es más confiable usar la función sigaction para manejar señales. La sintaxis es la siguiente:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
donde:
En el ejemplo dado por Thomas, la estructura de sigaction es la siguiente:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
donde:
Utilice esta estructura de sigaction con la señal SIGINT:
sigaction(SIGINT, &sigIntHandler, NULL);
Función de controlador
Finalmente, necesita una función de controlador para responder a la señal. En el ejemplo, my_handler simplemente imprime un mensaje y sale del programa:
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
Código completo
El siguiente es el código completo que utiliza sigaction para capturar eventos Ctrl-C:
#include#include #include #include void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); } int main(int argc,char** argv) { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); return 0; }
Al utilizar sigaction, puede detectar de manera confiable eventos Ctrl-C y tomar las medidas adecuadas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3