Sinais permitem que o sistema notifique um processo sobre interrupção, término ou outros eventos. Em Python, handlers são executados no thread principal, entre instruções do interpretador.
Exemplo prático
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 curto, desligamento previsível
O exemplo apenas altera uma flag. O loop percebe a solicitação, deixa de aceitar trabalho e encerra recursos em ordem. Operações longas em código nativo podem atrasar a execução do handler.
SIGINT e SIGTERM
SIGINT normalmente vem do teclado. Serviços Unix também devem considerar SIGTERM. A disponibilidade e o comportamento variam no Windows, então teste nos sistemas suportados.
Integração com asyncio
Loops assíncronos oferecem APIs próprias para sinais em plataformas compatíveis. Agende uma tarefa de desligamento em vez de bloquear o handler e imponha um timeout externo para processos que não terminam.
Continue estudando
Aprofunde a base com execução segura de comandos. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API, as limitações e as diferenças entre versões.