Compartir a través de


Señales de Ctrl+C y Ctrl+Inter

Las combinaciones de teclas Ctrl+C y Ctrl+Inter reciben un tratamiento especial por parte de los procesos de consola. De forma predeterminada, cuando una ventana de consola tiene el foco del teclado, Ctrl+C o Ctrl+Inter se trata como una señal (SIGINT o SIGBREAK) y no como entrada de teclado. De forma predeterminada, estas señales se pasan a todos los procesos de la consola que están asociados a la consola. (Los procesos desasociados no están afectados. Consulte Creación de una consola). El sistema crea un nuevo subproceso en cada proceso de cliente para controlar el evento. El subproceso genera una excepción si se está depurando el proceso. El depurador puede controlar la excepción o continuar con la excepción sin controlar.

Ctrl+Inter se trata siempre como una señal, pero una aplicación puede cambiar el comportamiento predeterminado de Ctrl+C de dos maneras que impidan que se llame a las funciones del controlador:

  • La función SetConsoleMode puede deshabilitar el modo de entrada ENABLE_PROCESSED_INPUT para el búfer de entrada de una consola, por lo que Ctrl+C se indica como entrada del teclado en lugar de como una señal.
  • Cuando se llama a SetConsoleCtrlHandler con los valores NULL y TRUE para sus parámetros, el proceso de llamada omite las señales de Ctrl+C. El procesamiento normal de Ctrl+C se restaura llamando a SetConsoleCtrlHandler con los valores NULL y FALSE. Los procesos secundarios heredan este atributo de omitir o no omitir las señales de Ctrl+C, pero puede habilitarse o deshabilitarse en cualquier proceso sin que ello afecte a los procesos existentes.

Para obtener más información sobre cómo se procesan estas señales, incluidos los tiempos de espera, vea la documentación de devolución de llamada de Rutina del controlador.