table of contents
SIGWAITINFO(2) | Manual del Programador de Linux | SIGWAITINFO(2) |
NOMBRE¶
sigwaitinfo, sigtimedwait - espera síncrona de señales encoladas
SINOPSIS¶
#include <signal.h>
int sigwaitinfo(const sigset_t *set, siginfo_t *info);
int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec timeout);
DESCRIPCIÓN¶
sigwaitinfo() suspende la ejecución del proceso invocador hasta que se comunica una de las señales en set. (Si una de las señales en set ya está siendo esperada por el proceso invocador, sigwaitinfo() regresará inmediatamente con información sobre la señal.)
sigwaitinfo() elimina la señal comunicada de la lista de señales pendientes del proceso invocador y devuelve el número de señal como resultado. Si el argumento info es distinto de NULL, devuelve una estructura del tipo siginfo_t (véase sigaction(2)) que contiene información sobre la señal.
Las señales devueltas via sigwaitinfo() son comunicadas en el orden habitual; véase signal(7) para más detalles.
sigtimedwait() opera de la misma forma que sigwaitinfo() salvo que tiene un argumento adicional, timeout, que habilita un límite superior de tiempo en el que el proceso puede estar suspendido. Este argumento es del siguiente tipo:
struct timespec {
long tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */ }
Si ambos campos de esta estructura tienen valor 0, se realiza un sondeo: sigtimedwait() regresa inmediatamente, ya sea con información sobre una señal pendiente para el invocador, o con un error si no había señales pendientes en set.
VALOR DEVUELTO¶
En caso de éxito, tanto sigwaitinfo() como sigtimedwait() devuelven un número de señal (un valor mayor que cero). En caso de fallo ambas llamadas devuelven -1, y modifican errno para reflejar el error.
ERRORES¶
OBSERVACIONES¶
Si se usa normalmente, el invocador bloquea las señales en set a través de una llamada previa a sigprocmask() (para que la acción por defecto para estas señales no tenga efecto si son comunicadas entre sucesivas llamadas a sigwaitinfo()o sigtimedwait()) y no establece manejadores para estas señales.
POSIX deja como indefinido el significado de un valor NULL para el argumento timeout de sigtimedwait() , permitiendo la posibilidad de que ésta tenga el mismo significado que una llamada a sigwaitinfo(), y, de hecho, así es lo que está establecido en Linux.
CONFORME A¶
POSIX 1003.1-2001
VÉASE TAMBIÉN¶
kill(2), sigaction(2), signal(2), sigpending(2), sigprocmask(2), sigqueue(2), signal(7), sigsetops(3)
7 junio 2002 | Linux 2.4.18 |