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