Las señales permiten que el sistema operativo notifique a un proceso sobre interrupción, terminación y otros eventos. Los handlers de Python se ejecutan en el hilo principal entre instrucciones del intérprete.
Ejemplo práctico
import signal
import time
stopping = False
def request_stop(signum, frame):
global stopping
stopping = True
signal.signal(signal.SIGINT, request_stop)
while not stopping:
time.sleep(0.2)
print("shutdown requested")
Handler breve, cierre predecible
El ejemplo solo cambia una bandera. El bucle detecta la solicitud, deja de aceptar trabajo y cierra recursos en orden. El código nativo prolongado puede retrasar el handler.
SIGINT y SIGTERM
SIGINT suele venir de la terminal. Los servicios Unix también deben considerar SIGTERM. La disponibilidad y el comportamiento cambian en Windows, así que prueba cada plataforma compatible.
Integración con asyncio
Los bucles asíncronos ofrecen APIs de señales en plataformas compatibles. Programa una corrutina de cierre en vez de bloquear el handler y aplica un timeout externo si el proceso no termina.
Sigue aprendiendo
Refuerza la base con ejecución segura de comandos. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API, las limitaciones y las diferencias entre versiones.