una trampera trampa pájaros planos para pajaros multicaptura jaula hacer fabricar como aves automatica c++ event-handling posix signals sigint

c++ - trampera - planos para hacer jaula trampa



¿Cómo puedo atrapar un evento ctrl-c?(C++) (4)

¿Cómo atrapo un evento Ctrl + C en C ++?


Para una aplicación de consola de Windows, desea usar SetConsoleCtrlHandler para manejar CTRL + C y CTRL + BREAK .

Vea here para un ejemplo.


Sí, esta es una pregunta dependiente de la plataforma.

Si está escribiendo un programa de consola en POSIX, use la API de señal (#include <signal.h>).

En una aplicación GUI WIN32 debe manejar el mensaje WM_KEYDOWN.


Tienes que atrapar la signal SIGINT (estamos hablando de POSIX ¿verdad?)

Ver la respuesta de @Gab Royer para sigaction.

Ejemplo:

#include <signal.h> #include <stdlib.h> #include <stdio.h> void my_handler(sig_t s){ printf("Caught signal %d/n",s); exit(1); } int main(int argc,char** argv) { signal (SIGINT,my_handler); while(1); return 0; }


signal no es la forma más confiable ya que difiere en las implementaciones. Yo recomendaría usar sigaction . El código de Tom ahora se vería así:

#include <signal.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> 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; }