msgget(2) System Calls Manual msgget(2) NOM msgget - Obtenir un identifiant de file de messages System V BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int msgget(key_t key, int msgflg); DESCRIPTION L'appel systeme msgget() renvoie l'identifiant de la file de messages System V associee a la valeur de la cle key. Il peut etre utilise soit pour obtenir l'identifiant d'une file de messages precedemment creee (quand msgflg vaut zero et key n'a pas la valeur IPC_PRIVATE), soit pour creer un nouvel ensemble. Une nouvelle file de messages est creee si key a la valeur IPC_PRIVATE ou bien si key n'est pas IPC_PRIVATE, aucune file de messages n'est associee a key, et IPC_CREAT a ete introduit dans msgflg. Si msgflg indique a la fois IPC_CREAT et IPC_EXCL et une file de messages est deja associee a key, msgget() echoue en positionnant errno a EEXIST. Cela est similaire au comportement de open(2) avec la combinaison O_CREAT | O_EXCL. Lors de la creation, les bits de poids faible de l'argument msgflg definissent les permissions d'acces a la file de messages Ces bits de permission ont le meme format et la meme semantique que les permissions indiquees pour l'argument mode dans les appels open(2). (Les permissions d'execution ne sont pas utilisees). Lors de la creation d'une nouvelle file de messages, sa structure de donnees associee msqid_ds (consultez msgctl(2)) est initialisee 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 copies dans les 9 bits de poids faible de msg_perm.mode. - msg_qnum, msg_lspid, msg_lrpid, msg_stime et msg_rtime sont configures a 0. - msg_ctime est rempli avec l'heure actuelle. - msg_qbytes est rempli avec la limite systeme MSGMNB. Si la file de messages existe deja, les permissions d'acces sont controlees, et une verification est faite pour voir si la file est prete a etre detruite. VALEUR RENVOYEE msgget() renvoie l'identifiant de la file de messages (un entier non negatif), s'il reussit. En cas d'echec -1 est renvoye et errno est defini pour indiquer l'erreur. ERREURS EACCES Une file de messages existe associee a la cle key, mais le processus appelant n'a pas de permissions pour acceder a cette file et n'a pas la capacite CAP_IPC_OWNER dans l'espace de noms utilisateur qui gere son espace de noms IPC. EEXIST IPC_CREAT et IPC_EXCL sont specifies dans msgflg, mais une file de messages associee a la cle key existe deja. ENOENT Aucune file de messages n'existe associee a la cle key et msgflg ne contient pas IPC_CREAT. ENOMEM Le systeme doit creer une file de messages, mais n'a pas assez de memoire pour la nouvelle structure de donnees. ENOSPC Une file de messages doit etre creee mais le nombre maximal de files de messages sur le systeme (MSGMNI) est atteint. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, SVr4. Linux Jusqu'a Linux 2.3.20, Linux renvoyait EIDRM pour un msgget() sur une file de messages prete a etre supprimee. NOTES IPC_PRIVATE n'est pas destine au champ msgflg mais est du type key_t. Si cette valeur speciale est fournie pour key, l'appel systeme ignorera tout sauf les 9 bits de poids faible de msgflg et creera une nouvelle file de messages (en cas de succes). La limite systeme concernant les ressources de files de messages et affectant un appel a msgget() est : MSGMNI Limite systeme du nombre de files de messages. Avant Linux 3.19, la valeur par defaut de cette limite etait calculee en utilisant une formule fondee sur la memoire disponible du systeme. Depuis Linux 3.19, la valeur par defaut est de 32 000. Sous Linux, cette limite peut etre consultee et modifiee grace au fichier /proc/sys/kernel/msgmni. BOGUES Le choix du nom IPC_PRIVATE est malheureux, IPC_NEW aurait mieux decrit sa fonction. VOIR AUSSI msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), sysvipc(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 msgget(2)