Solución:
Tuve este problema con Windows 10 Pro Build 18363 y Python 3.8.1. Estaba ejecutando algunos scripts de Python y no pude detener algunos con CTRL + C
, pero CTRL + BREAK
Trabajó todo el tiempo. Los documentos de Windows tenían esto que decir:
Las combinaciones de teclas CTRL + C y CTRL + BREAK reciben un manejo especial por parte de los procesos de la consola. De forma predeterminada, cuando una ventana de consola tiene el foco del teclado, CTRL + C o CTRL + BREAK se trata como una señal (SIGINT o SIGBREAK) y no como entrada de teclado …
CTRL + BREAK siempre se trata como una señal, pero una aplicación puede cambiar el comportamiento predeterminado de CTRL + C de dos formas que impiden 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 informa como entrada de teclado en lugar de como señal.
- Cuando se llama a SetConsoleCtrlHandler con valores NULL y TRUE para sus parámetros, el proceso de llamada ignora las señales CTRL + C. El procesamiento normal de CTRL + C se restaura llamando a SetConsoleCtrlHandler con valores NULL y FALSE. Este atributo de ignorar o no ignorar las señales CTRL + C es heredado por procesos secundarios, pero puede ser habilitado o deshabilitado por cualquier proceso sin afectar los procesos existentes.
Por lo tanto, CTRL + C
parece ser un SIGINT y sus acciones pueden ser modificadas por el programa que está ejecutando. Parece que Python en Windows se ha codificado de tal manera que CTRL + C
se está procesando como entrada de teclado en lugar del SIGINT que estamos esperando. Afortunadamente para mi tengo el CTRL + BREAK
teclas en mi teclado y esto funciona todo el tiempo.
Para aquellos de ustedes que no tienen BREAK
en su teclado, puede usar el teclado virtual en pantalla de Windows.
- prensa
win key + r
para abrir el programa de ejecución de la aplicación. - Escribe
osk
y presiona ok - En el teclado virtual, presione
ctrl + ScrLk
y esto debería acabar con el programa.
Este hilo de pila tiene algunos otros métodos que puede probar si ctrl + ScrLk
no funciona en el teclado virtual.
Puedes escribir
CTRL + Z,
luego presione ENTER para salir de Python de powershell.
Captura de pantalla de Powershell
Este es un error que apareció recientemente en Windows 10 Insider build 15002.
Una solución alternativa es cambiar las teclas asignadas de Ctrl C a algo como Ctrl K
Si no está familiarizado con cómo hacer esto, puede mirar hacia arriba o hacia stty -a
Puede ejecutar este comando en cada sesión de bash que asignará su Terminate a Ctrl + K
stty intr ^k
Como solución TEMP, puede incluir esto en su Bashrc para que se ejecute en cada nueva sesión
Este error ya se ha informado en Github # 1569