¿Cuáles son los equivalentes en Python de las funciones sighold y sigrelse que se encuentran en C?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Parece que el módulo de señal de Python no tiene nada similar a las funciones sighold y sigrelse que se encuentran en C, usando signal.h.¿Existen equivalentes en Python de cualquier ¿clasificar?

¡Muchas gracias!

¿Fue útil?

Solución

No existen enlaces directos para esto en Python.Acceder a ellos a través de ctypes es bastante fácil;Aquí hay un ejemplo.

import ctypes, signal
libc = ctypes.cdll.LoadLibrary("libc.so.6")
libc.sighold(signal.SIGKILL)
libc.sigrelse(signal.SIGKILL)

No estoy familiarizado con el uso de estas llamadas, pero tenga en cuenta que los manejadores de señales de Python funcionan de manera diferente a C.Cuando se adjunta código Python a una devolución de llamada de señal, la señal se captura en el lado C del intérprete y se pone en cola.El intérprete es interrumpido ocasionalmente por tareas internas (y cambio de hilo, etc.).Es durante esa interrupción que se llamará al controlador Python para la señal.

Dicho todo esto, solo tenga en cuenta que el manejo de señales de Python es un poco menos asincrónico que los manejadores de señales normales de C.

Otros consejos

No hay forma de "bloquear" señales temporalmente desde secciones críticas (ya que esto no es compatible con todas las versiones de Unix).

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top