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.