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.