Provided by: manpages-fr-dev_4.13-4_all 

NOM
msgget - Obtenir un identifiant de file de messages System V
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
DESCRIPTION
L'appel système msgget() renvoie l'identifiant de la file de messages System V associée à la valeur de la
clé key. Il peut être utilisé soit pour obtenir l'identifiant d'une file de messages précédemment créée
(quand msgflg vaut zéro et key n'a pas la valeur IPC_PRIVATE), soit pour créer un nouvel ensemble.
Une nouvelle file de messages est créée si key a la valeur IPC_PRIVATE ou bien si key n'est pas
IPC_PRIVATE, aucune file de messages n'est associée à key, et IPC_CREAT a été introduit dans msgflg.
Si msgflg indique à la fois IPC_CREAT et IPC_EXCL et une file de messages est déjà associée à key,
msgget() échoue en positionnant errno à EEXIST. Cela est similaire au comportement de open(2) avec la
combinaison O_CREAT | O_EXCL.
Lors de la création, les bits de poids faible de l'argument msgflg définissent les permissions d'accès à
la file de messages Ces bits de permission ont le même format et la même sémantique que les permissions
indiquées pour l’argument mode dans les appels open(2). (Les permissions d'exécution ne sont pas
utilisées).
Lors de la création d’une nouvelle file de messages, sa structure de données associée msqid_ds (consultez
msgctl(2)) est initialisée comme suit :
•
msg_perm.cuid et msg_perm.uid sont remplis avec l'UID effectif du processus appelant.
•
msg_perm.cgid et msg_perm.gid sont remplis avec le GID effectif du processus appelant.
•
Les 9 bits de poids faible de msgflg sont copiés dans les 9 bits de poids faible de msg_perm.mode.
•
msg_qnum, msg_lspid, msg_lrpid, msg_stime et msg_rtime sont configurés à 0.
•
msg_ctime est rempli avec l'heure actuelle.
•
msg_qbytes est rempli avec la limite système MSGMNB.
Si la file de messages existe déjà, les permissions d'accès sont contrôlées, et une vérification est
faite pour voir si la file est prête à être détruite.
VALEUR RENVOYÉE
msgget() renvoie l'identifiant de la file de messages (un entier non négatif), s'il réussit. En cas
d'échec -1 est renvoyé et errno contient le code d'erreur.
ERREURS
En cas d'échec, errno prend l'une des valeurs suivantes :
EACCES Une file de messages existe associée à la clé key, mais le processus appelant n'a pas de
permissions pour accéder à cette file et n'a pas la capacité CAP_IPC_OWNER dans l'espace de noms
utilisateur qui gère son espace de noms IPC.
EEXIST IPC_CREAT et IPC_EXCL sont spécifiés dans msgflg, mais une file de messages associée à la clé key
existe déjà.
ENOENT Aucune file de messages n'existe associée à la clé key et msgflg ne contient pas IPC_CREAT.
ENOMEM Le système doit créer une file de messages, mais n'a pas assez de mémoire pour la nouvelle
structure de données.
ENOSPC Une file de messages doit être créée mais le nombre maximal de files de messages sur le système
(MSGMNI) est atteint.
CONFORMITÉ
POSIX.1-2001, POSIX.1-2008, SVr4.
NOTES
L'inclusion de <sys/types.h> et <sys/ipc.h> n'est pas nécessaire sous Linux et n'est exigée par aucune
version de POSIX. Cependant, certaines implémentations anciennes nécessitent l'inclusion de ces fichiers
d'en-tête, et le SVID documente aussi leur inclusion. Les applications ayant pour but d'être portables
pourraient inclure ces fichiers d'en-tête.
IPC_PRIVATE n'est pas destiné au champ msgflg mais est du type key_t. Si cette valeur spéciale est
fournie pour key, l'appel système ignorera tout sauf les 9 bits de poids faible de msgflg et créera une
nouvelle file de messages (en cas de succès).
La limite système concernant les ressources de files de messages et affectant un appel à msgget() est :
MSGMNI Limite système du nombre de files de messages. Avant Linux 3.19, la valeur par défaut de cette
limite était calculée en utilisant une formule fondée sur la mémoire disponible du système. Depuis
Linux 3.19, la valeur par défaut est de 32 000. Sous Linux, cette limite peut être consultée et
modifiée grâce au fichier /proc/sys/kernel/msgmni.
Notes pour Linux
Jusqu'à la version 2.3.20, Linux renvoyait EIDRM pour un msgget() sur une file de messages prête à être
supprimée.
BOGUES
Le choix du nom IPC_PRIVATE est malheureux, IPC_NEW aurait mieux décrit sa fonction.
VOIR AUSSI
msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), sysvipc(7)
COLOPHON
Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à
l'adresse https://www.kernel.org/doc/man-pages/.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot
<david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
Linux 2 août 2019 MSGGET(2)