SIGQUEUE(2) | Manual del Programador de Linux | SIGQUEUE(2) |
sigqueue - envía una señal y un bloque de datos a un proceso
#include <signal.h>
int sigqueue(pid_t pid, int sig, const union sigval value);
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.
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.
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
7 junio 2002 | Linux 2.4.18 |