sigsuspend o sigpause subrutina

Finalidad

Cambia automáticamente el conjunto de señales bloqueadas y espera una señal.

Biblioteca

Biblioteca C estándar (libc.a)

Sintaxis

#include <signal.h>

int sigsuspend ( SignalMask)
const sigset_t *SignalMask;
int sigpause (SignalMask)
int SignalMask;

Descripción

La subrutina sigsuspend sustituye la máscara de señal de una hebra por el conjunto de señales a las que apunta el parámetro SignalMask . Luego suspende la ejecucion del hilo hasta que se entrega una senal que ejecuta una funcion de captura de senal o termina el proceso. La subrutina sigsuspend no permite que se bloquee la señal SIGKILL o SIGSTOP . Si un programa intenta bloquear una de estas señales, la subrutina sigsuspend no proporciona ninguna indicación del error.

Si la entrega de una señal hace que el proceso finalice, la subrutina sigsuspend no se devuelve. Si la entrega de una señal hace que se inicie una función de captura de señal, la subrutina sigsuspend vuelve después de que se devuelva la función de captura de señal, con la máscara de señal restaurada en el conjunto que existía antes de la subrutina sigsuspend .

La subrutina sigsuspend establece la máscara de señal y espera una señal desbloqueada como una operación atómica. Esto significa que las señales no pueden ocurrir entre las operaciones de establecer la máscara y esperar una señal. Si un programa invoca las subrutinas sigprocmask (SIG_SETMASK) y pause por separado, es posible que la subrutina pause no note una señal que se produzca entre estas subrutinas.

En el uso normal, una señal se bloquea utilizando la sigprocmask (SIG_BLOCK, ...) subrutina para aplicaciones de una sola hebra o sigthreadmask (SIG_BLOCK, ...) subrutina para aplicaciones multihebra (utilizando la biblioteca de hebras libpthreads.a ) al principio de una sección crítica. A continuación, el proceso/hebra determina si hay trabajo que realizar. Si no se va a realizar ningún trabajo, el proceso/hebra espera trabajo llamando a la subrutina sigsuspend con la máscara devuelta anteriormente por la subrutina sigprocmask o sigthreadmask .

La subrutina sigpause se proporciona por compatibilidad con sistemas UNIX antiguos; su función es un subconjunto de la subrutina sigsuspend.

Parámetro

Elemento Descripción
SignalMask Apunta a un conjunto de señales.

Valores de retorno

Si una señal es capturada por el hilo llamante y el control es devuelto desde el manejador de señales, el hilo llamante reanuda la ejecución después de la subrutina sigsuspend o sigpause, que siempre devuelven un valor de -1 y ponen la variable global errno a EINTR.