SIGQUEUE(3)

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);

    Requisitos de Macros de Prueba de Características para glibc (véase feature_test_macros(7)):

sigqueue(): _POSIX_C_SOURCE >= 199309L

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.

EPERM
    The process does not have permission to send the signal to the receiving process. For the required permissions, see kill(2).

ESRCH
    No hay ningún proceso cuyo identificador de proceso coincida con pid.

VERSIONES
sigqueue() and the underlying rt_sigqueueinfo() system call first appeared in Linux 2.2.

ATRIBUTOS
Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
Interfaz | Atributo | Valor
sigqueue() | Seguridad del hilo | Multi-hilo seguro

CONFORME A
POSIX.1-2001, POSIX.1-2008.

NOTAS
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.

  Diferencias kernel / biblioteca C
On Linux, sigqueue() is implemented using the rt_sigqueueinfo(2) system call. The system call differs in its third argument, which is the siginfo_t structure that will be supplied to the receiving process's signal handler or returned by the receiving process's sigtimedwait(2) call. Inside the glibc sigqueue() wrapper, this argument, uinfo, is initialized as follows:

    uinfo.si_signo = sig;      /* Argument supplied to sigqueue() */
    uinfo.si_code = SI_QUEUE;
    uinfo.si_pid = getpid();   /* Process ID of sender */
    uinfo.si_uid = getuid();   /* Real UID of sender */
    uinfo.si_value = val;      /* Argument supplied to sigqueue() */

VÉASE TAMBIÉN
kill(2), rt_sigqueueinfo(2), sigaction(2), signal(2), pthread_sigqueue(3), sigwait(3), signal(7)

COLOFÓN
Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es> Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org>..