Quais são os equivalentes Python da sighold e funções sigrelse encontrado em C?

StackOverflow https://stackoverflow.com/questions/113170

  •  02-07-2019
  •  | 
  •  

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!

Foi útil?

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).

https://docs.python.org/library/signal.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top