NOMBRE¶
sigqueue - envía una señal y un bloque de datos a un proceso
SINOPSIS¶
#include <signal.h>
int sigqueue(pid_t pid, int sig, const union
sigval value);
DESCRIPCIÓN¶
sigqueue() envía la señal especificada en
sig al proceso
cuyo identificador de proceso es dado en
pid. Los permisos requeridos
para enviar la señal son los mismos que para
kill(2). Como pasa
con
kill(2), la señal nula (0) puede emplearse para comprobar si
existe un proceso con un identificador de proceso dado.
El argumento
value se utiliza para especificar un bloque de datos
acompañante (o bien un entero o un puntero) que se enviará con la
señal, y que tiene el siguiente tipo:
union sigval {
int sival_int;
void *sival_ptr;
};
Si el proceso receptor tiene un manejador instalado para esta señal usando
la opción
SA_SIGINFO en la llamada a
sigaction(2), puede
obtener los datos a través del campo
si_value de la estructura
siginfo_t pasada como segundo argumento al manejador. Además, se
asignará al campo
si_code de esta estructura el valor
SI_QUEUE.
VALOR DEVUELTO¶
En caso de éxito,
sigqueue() devuelve 0, indicando que la señal
fue ennviada satisfactoriamente al proceso receptor. En otro caso se devuelve
-1 y
errno se modifica para indicar el error.
ERRORES¶
- EAGAIN
- Se alcanzó el límite de señales que puede
ser encolado. (Véase signal(7) para más
información.)
- EINVAL
- sig es inválido.
- ESRCH
- No hay ningún proceso cuyo identificador de proceso
coincida con pid.
- EPERM
- El proceso no tiene permiso para enviar la señal al
proceso receptor. (Véase kill(2) para más
información.)
OBSERVACIONES¶
Si esta función termina por enviar una señal al proceso que la
invocó, y esa señal no fue bloqueada por el hilo invocador, y no hay
otros hilos dispuestos a manejar esta señal (ya sea porque la tienen
desbloqueada o porque la esperan con
sigwait(3)), entonces deberá
enviarse al menos alguna señal a este hilo antes de que esta función
regrese.
POSIX 1003.1-2001
VÉASE TAMBIÉN¶
kill(2),
sigaction(2),
signal(2),
sigwait(3),
signal(7)