A la espera de la señal y el bloqueo de señales

  
 

estado de señal: &señal " pendiente y " es un estado, en referencia a la señal generada con la señal de este período de tiempo antes de ser procesada; señal y " bloqueo y " es una operación de conmutación, en referencia a señal de bloqueo se está procesando, pero no detiene la señal se genera. ejemplo APUE antes de dormir con el bloqueo de la señal de salida sigprocmask, y dormir, y luego genera una señal de salida durante el sueño, pero esta vez la señal de salida está bloqueada, (los chinos y " bloqueo y " aquí fácilmente ser mal interpretado como una estados, de hecho, una operación similar del interruptor, por lo que el y " bloqueadas a través y ", en lugar y de " bloqueado y ") es y " pendientes y " estado, el sueño más tarde con sigprocmask fuera bloqueando la salida de la señal de conmutación, ya que la señal de salida se ha generado en un estado pendiente anterior, cuando el bloqueo se apaga, retirar de inmediato y " pendientes y " estado, procesado, antes de que esto suceda retorno sigprocmask. Resumen: La señal no está bloqueada ser desechada, pero no procesada. Este estado se llama pendiente. Después de desbloquear, es y " pendiente y " señal será procesada.

Para llamar sigprocmask desbloqueado, pero antes del regreso sigprocmask para resolver la acción de bloqueo se ha completado.

donde antes de desbloquear retorno de la función sigprocmask, es necesario para procesar la señal pendiente.

int sigpend (* sigset_t conjunto);. --- pendiente de la señal adquirida

int sigprocmask (int cómo, sigset_t const * conjunto, sigset_t * oset);

---- el valor para decidir cómo se completa la operación, el bloqueo, desbloqueo de la nota como

: en espera de la señal no puede tener el mismo. Si se genera la señal

y una pendiente, y será descartada una vez generada.

Por supuesto, si una señal en tiempo real, es otra cuestión. Dado que la señal en tiempo real puede ser una pluralidad de señales En espera de idéntica.

señal de ciclo de vida: Para un ciclo de vida completo de la señal (la señal enviada al controlador apropiado está terminado), que se puede dividir en tres etapas importantes, tres etapas de cuatro eventos importantes para caracterizar: 1 señal del nacimiento; registro 2 de señal se completa en el proceso; cancelación 3 señal en el proceso de finalización; función de procesamiento de señal 4 está terminado ..... El intervalo de tiempo entre dos eventos adyacentes constituyen una fase del ciclo de vida de la señal. El significado real se establece a continuación cuatro eventos: 1 señal " nacido ". señal de nacimiento se refiere a un disparador de evento se produce (como se detecta anormalidad hardware, el temporizador expira y la señal de llamada a la función de transmisión kill () o sigqueue (), etc.). .

2 de la señal en el proceso de destino " Registro y datos de estructura quot;; proceso task_struct en el proceso de los miembros presentes sobre la pendiente de la señal: sigpending struct pendientes; struct sigpending {struct sigqueue * cabeza, ** cola; señal sigset_t;}; el primer y segundo miembros están dirigidos sigqueue un tipo de estructura de la cadena (denominado " en espera de cadena " señal de información;) extremo a extremo, el proceso es el tercer miembro toda señal pendiente conjunto, cada uno de la estructura de cadena de información sigqueue caracterizar una señal de información particular, llevado por, y los puntos a la siguiente estructura sigqueue: struct sigqueue {struct sigqueue * siguiente; siginfo_t info;}; se refiere a la señal de proceso de registro es un valor de señal añadido al proceso de espera de la señal centralizada (el segundo sigpending estructura de la señal sigset_t miembro), y la información transportada por la señal se reserva a una cadena de información de la señal estructura sigqueue pendiente. Mientras la señal se centra en la señal de proceso en espera, lo que indica que el proceso ha sido consciente de la existencia de estas señales, pero no hay tiempo suficiente para hacer frente a, o la señal es bloqueada proceso. Nota: Cuando se envía una señal a un proceso en tiempo real, independientemente de si la señal ha sido registrada en el proceso, se registrará una vez más, por lo tanto, no se pierde la señal, por lo tanto, la señal en tiempo real también se llama " señal fiable ". Esto significa que la señal pueda ocupar la misma información en tiempo real en la cadena de señal con una estructura de múltiples sigqueue proceso pendiente (proceso de cada uno recibe una señal en tiempo real, se le asignará una estructura para registrar la información de la señal, y añadir la estructura que todos nacidos de tiempo real de la señal será registrado en el extremo pendiente de la cadena de la señal en el proceso de destino); cuando se envía una señal a un proceso en tiempo no real, si la señal ha sido registrado en el proceso, se descartará la señal, lo que resulta en la señal perdida. Por lo tanto, la señal en tiempo no real también se llama " señal fiable ". Esto significa que la misma señal en una información en tiempo no real, en espera de proceso de la cadena de señal, el más sigqueue ocupan una estructura (un no-tiempo real de la señal del nacimiento, (1), si nos encontramos con la misma señal ha sido registrada en la estructura objetivo ya no es inscribirse en el proceso, el equivalente a no sé esta generación de la señal, la pérdida de señal, (2), si el proceso de señal pendiente no es la misma señal, entonces se registra a sí mismos en el proceso).

3. En el proceso de la señal de pérdidas y ganancias. Durante la ejecución del proceso de destino, detecta si está pendiente una señal (siempre hacer una verificación de tales se devuelve desde el espacio del sistema de espacio de usuario). Si la espera pendiente de la señal está presente y el proceso de tratamiento de la señal no está bloqueado, antes de que las funciones de procesamiento de señal de funcionamiento correspondientes, se procesará la ocupación señal pendiente en la estructura de cadena de la señal eliminado. Elimina si la señal en tiempo real y la señal en tiempo no real es un proceso diferente de la señal pendiente. Para la señal en tiempo no real, ya que a lo sumo sólo toma una estructura sigqueue en espera de la cadena de información de la señal, por lo que después de la estructura se libera, la señal debe centrarse en la señal pendiente proceso de borrado (cancelación de la señal se ha completado), y para la señal en tiempo real que puede ocupar múltiples estructuras sigqueue pendientes cadena de información de la señal, y por lo tanto debe ser tratado por la diferencia entre el número de estructura gqueue ocupado: si sólo se necesita una estructura sigqueue (proceso recibe la señal de una sola vez), a continuación, la señal debe estar en el proceso de Retirar un señal pendiente (cancelación de la señal se ha completado). señal de lo contrario, el proceso está pendiente no se concentra para eliminar la señal (señal de cancelación se ha completado). Antes de realizar el proceso de funciones de procesamiento de señal correspondiente, la señal es primero necesario escribir-off en el proceso.

4. señal de final de la vida. Después de la cancelación de la señal de proceso, realice inmediatamente la función de procesamiento de señal apropiado, después de la aplicación, el impacto de este proceso de enviar una señal a un final completo. Nota: 1) señal o no registrado, una función (por ejemplo, matar () o la sigqueue (), etc.) de la señal de transmisión y una función de montaje de la señal (la señal () y la sigaction ()) independientemente del valor de señal relacionada solamente (valor de señal es menor que SIGRTMIN una señal registrada en más de una vez, el valor de señal de la señal entre SIGRTMIN y SIGRTMAX, con tal de que se proceso de recepción para ser registrada). 2) la señal que se da de baja a la función de procesamiento de señal apropiada se termina este momento, si el proceso varias veces y reciben la misma señal, entonces la señal en tiempo real, cada vez que hay se registrarán en el proceso; para la señal en tiempo no real dijo que no importa cuántas veces se recibe la señal, sólo se considerará recibir una señal, el registro de una sola vez en el proceso.

Copyright © Conocimiento de Windows All Rights Reserved