msgget   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 27 mai 2004
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
msgget - Obtenir un identificateur de file de messages  



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 msgget ( key_t key, int msgflg );  




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
L'appel système msgget() renvoie l'identificateur de la file de messages associée à la clé key. Une nouvelle file de messages est créée si key a la valeur IPC_PRIVATE ou si aucune file de message n'est associée à key, et si la valeur IPC_CREAT a été introduite dans msgflg. Si msgflg indique à la fois IPC_CREAT et IPC_EXCL et si une file de messages associée à key existe déjà, la fonction msgget() échouera et errno contiendra la valeur EEXIST. (C'est analogue à l'effet de la combination O_CREAT | O_EXCL pour open(2).)

Lors de la création, les bits de poids faibles de l'argument msgflg définissent les permissions de la file de message. Ces bits de permission ont le même format et la même signification que les permissions indiquées dans l'argument mode de l'appel open(2). (Les permission d'exécution ne sont pas utilisées).

Pendant la création, la structure de données associée msqid_ds est initialisée de la manière suivante :

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 fixés à 0.
msg_ctime est rempli avec l'heure actuelle.
msg_qbytes est rempli avec la limite système MSGMNB.

Si la file de message existe déjà, les permissions sont contrôlées, et une vérification est faite pour voir si la file est prête à être détruite.  




VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
msgget() renvoie l'identificateur 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 indique à 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
Pas assez de mémoire pour les nouvelles structures de données.
ENOSPC
Le nombre maximum de files de messages sur le système (MSGMNI) est atteint.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, POSIX.1-2001.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 maximum de files de messages sur le système : dépendant de la politique (sous Linux, cette limite peut être lue et modifiée via /proc/sys/kernel/msgmni).
 



Notes Linux   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Jusqu'à la version 2.3.20, Linux renvoyait EIDRM pour un msgget() sur une file de messages prête à être supprimée.  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
L'utilisation de IPC_PRIVATE n'empêche pas les autres processus d'avoir accès à la file de messages allouée. Le nom IPC_PRIVATE a été mal choisi, IPC_NEW aurait été mieux.  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), svipc(7)  



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 22 décembre 2007.

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 msgget ». 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
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
Notes Linux
BOGUES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EACCESERREURS
EEXISTERREURS
ENOENTERREURS
ENOMEMERREURS
ENOSPCERREURS
MSGMNINOTES



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:17, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional