Saltar al contenido

Ctrl-C para salir de Python en Powershell ahora no funciona

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:

  1. 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.
  2. 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.

  1. prensa win key + r para abrir el programa de ejecución de la aplicación.
  2. Escribe osky presiona ok
  3. 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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *