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 clé
key.
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. Ceci est similaire au comportement de
open(2)
avec la combinaison
O_CREAT | O_EXCL.
Lors de la création, les bits de poids faibles de l'argument
msgflg définissent les permissions d'accès à la
file de messages (pour le propriétaire, le groupe, et les autres) avec
le même format et la même signification que les permissions
d'accès (
mode) dans les appels
open(2). (Les permissions
d'exécution ne sont pas utilisées).
Pendant la création, l'appel système initialise la structure
système
msqid_ds (consultez
msgctl(2)) de la file de
messages 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 faibles de msgflg sont copiés dans les 9
bits de poids faibles 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
positif), 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.
- EEXIST
- Une file de messages existe associée à la clé
key et msgflg réclame à la fois
IPC_CREAT et IPC_EXCL.
- 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 les nouvelles structures de
données.
- ENOSPC
- Le nombre maximal de files de messages sur le système
(MSGMNI) est atteint.
SVr4, POSIX.1-2001.
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 à la
place de
key, l'appel système ignorera tout sauf les 9 bits de
poids faibles de
msgflg et créera une nouvelle file de messages.
La limite système concernant les files de messages et affectant
msgget() est
- MSGMNI
- Nombre maximal de files de messages sur le système (sous Linux,
cette limite peut être consultée et modifiée
grâce au fichier /proc/sys/kernel/msgmni).
Notes sur 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),
svipc(7)
COLOPHON¶
Cette page fait partie de la publication 3.65 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce
document en utilisant la commande «
man -L C
<section>
<page_de_man> ».