Quais são os equivalentes Python da sighold e funções sigrelse encontrado em C?
Pergunta
Parece que o módulo de sinal Python não tem nada parecido com o sighold e funções sigrelse encontrados em C, usando signal.h. Há equivalentes Python de qualquer tipo?
Muito obrigado!
Solução
Não há ligações diretas para isso em Python. Acessá-las através ctypes é bastante fácil; aqui está um exemplo.
import ctypes, signal
libc = ctypes.cdll.LoadLibrary("libc.so.6")
libc.sighold(signal.SIGKILL)
libc.sigrelse(signal.SIGKILL)
Eu não estou familiarizado com o uso dessas chamadas, mas esteja ciente de que os manipuladores de sinal do Python funcionam de forma diferente do que C. Quando o código Python é anexado a uma chamada de retorno do sinal, o sinal é pego no lado do C do intérprete e em fila . O intérprete é ocasionalmente interrompido para arrumação interna (e comutação de rosca, etc). É durante essa interrupção do manipulador de Python para o sinal será chamado.
Tudo isso para dizer, basta estar ciente de que a manipulação do sinal do Python é um pouco menos assíncrona de manipuladores de sinais C normais.
Outras dicas
Não há nenhuma maneira de `bloco '' sinais` temporariamente de seções críticas (uma vez que este não é suportado por todos os sabores de Unix).