msgop | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'argument msgp est un pointer vers une structure, définie par l'appelant, dont la forme est la suivante :
struct msgbuf { long mtype; /* type de message ( > 0 ) */ char mtext[1]; /* contenu du message */ };
avec une table mtext de taille msgsz, valeur entière non négative. Les message de taille nulle (sans champ msgsz) sont autorisés. Le membre mtype doit avoir une valeur strictement positive. Cette valeur peut être utilisée par le processus lecteur pour la sélection de messages (voir la description de msgrcv() plus loin).
msgsnd() | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
S'il y a assez de place dans la file, msgsnd() réussit immédiatement. (La capacité de la file est définie par le champ msg_bytes de la structure associée à la file de message. Durant la création de la file, ce champ est initialisé à MSGMNB octets, mais cette limite peut être modifiée avec msgctl(2)). S'il n'y a pas assez de place, alors le comportement par défaut de msgsnd() est de bloquer jusqu'à obtenir suffisamment d'espace. En indiquant IPC_NOWAIT, le message ne sera pas envoyé et l'appel système échouera en retournant EAGAIN dans errno.
Un appel msgsnd() bloqué peut également échouer si :
Si l'appel réussit, la structure de file de messages sera mise à jour ainsi :
msgrcv() | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'argument msgsz indique la taille maximale en octets du membre mtext de la structure pointée par l'argument msgp. Si le contenu du message est plus long que msgsz octets, le comportement dépend de la présence ou non de MSG_NOERROR dans msgflg. Si MSG_NOERROR est spécifié , alors le message sera tronqué (et la partie tronquée sera perdue) ; si MSG_NOERROR n'est spécifié pas, le message ne sera pas extrait de la file, et l'appel système échouera en renvoyant -1 et en indiquant E2BIG dans errno
L'argument msgtyp indique le type de message désiré :
L'argument msgflg est composé d'un OU binaire « | » avec les options suivantes :
Si aucun message du type requis n'est disponible et si on n'a pas demandé IPC_NOWAIT dans msgflg, Le processus appelant est bloqué jusqu'à l'occurrence d'un des événements suivants.
Si l'appel système réussit, la structure décrivant la file de messages est mise à jour comme suit :
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Lorsque msgrcv() échoue, errno est définie avec l'une des valeurs suivantes :
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les limites systèmes suivantes influent sur msgsnd() :
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 14 octobre 1996 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 msgop ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
E2BIG | ERREURS |
EACCES | ERREURS |
EAGAIN | ERREURS |
EFAULT | ERREURS |
EIDRM | ERREURS |
EINTR | ERREURS |
EINVAL | ERREURS |
ENOMEM | ERREURS |
ENOMSG | ERREURS |
IPC_NOWAIT | msgrcv() |
MSG_EXCEPT | msgrcv() |
MSG_NOERROR | msgrcv() |
MSGMAX | NOTES |
MSGMNB | NOTES |