Sous-routine sigqueue

Objectif

Met en file d'attente un signal dans un processus.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include <signal.h>

int sigqueue (pid, signo, value)
pid_t pid;
int signo;
const union sigval value;

Descriptif

La sous-routine sigqueue envoie le signal spécifié par le paramètre signo avec la valeur spécifiée par le paramètre value au processus spécifié par le paramètre pid . Si le paramètre signo a pour valeur zéro, une vérification des erreurs est effectuée, mais aucun signal n'est envoyé. Vous pouvez l'utiliser pour vérifier la validité du paramètre pid .

Les conditions requises pour qu'un processus ait le droit de mettre en file d'attente un signal pour un autre processus sont les mêmes que pour la sous-routine kill .

La sous-routine sigqueue est renvoyée immédiatement. Si SA_SIGINFO est défini par le processus de réception pour le signal spécifié et si les ressources sont disponibles pour mettre le signal en file d'attente, le signal est mis en file d'attente et envoyé au processus de réception. Si SA_SIGINFO n'est pas défini pour le paramètre signo , le signal est envoyé au moins une fois au processus de réception.

Si plusieurs signaux de la plage SIGRTMIN à SIGRTMAX doivent être disponibles pour la distribution, le numéro le plus bas d'entre eux sera distribué en premier.

Paramètres

Article Descriptif
PID Indique le processus auquel un signal doit être envoyé.
code d'accès Indique le numéro de signal.
value Indique la valeur à envoyer avec le signal.

Valeurs renvoyées

Une fois l'opération terminée, la sous-routine sigqueue renvoie la valeur zéro. En cas d'échec, il renvoie la valeur -1 et définit la variable errno pour indiquer l'erreur.

Code d'erreur

La sous-routine sigqueue échouera si:
Article Descriptif
FEAGA Aucune ressource n'est disponible pour mettre le signal en file d'attente. Le processus a déjà mis en file d'attente des signaux SIGQUEUE_MAX qui sont toujours en attente au niveau des récepteurs ou une limite de ressources à l'échelle du système a été dépassée.
EINVAL La valeur du paramètre signo est un numéro de signal non valide ou non pris en charge, ou si le signal sélectionné peut arrêter ou poursuivre le processus de réception. AIX ne prend pas en charge la mise en file d'attente des signaux suivants : SIGKILL, SIGSTOP, SIGTSTP, SIGCONT, SIGTTIN, SIGTTOU et SIGCLD.
EPERM Le processus ne dispose pas des privilèges appropriés pour envoyer le signal au processus de réception.
ESRCH Le processus spécifié par le paramètre pid n'existe pas.