Votre IP: 38.107.179.242 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]


MSGGET

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. VALEUR RENVOYÉE
  5. ERREURS
  6. NOTES
  7. BOGUES
  8. CONFORMITÉ
  9. NOTES SUR LINUX
  10. VOIR AUSSI
  11. TRADUCTION

 

NOMIndex

msgget - Obtenir un identifiant de file de messages  

SYNOPSISIndex

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

int msgget(key_t key, int msgflg);  

DESCRIPTIONIndex

L'appel système msgget() renvoie l'identifiant 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 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 message (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 (voir 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 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 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ÉEIndex

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.  

ERREURSIndex

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 maximum de files de messages sur le système (MSGMNI) est atteint.
 

NOTESIndex

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 (sous Linux, cette limite peut être consultée et modifiée grâce au fichier /proc/sys/kernel/msgmni).
 

BOGUESIndex

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, ICP_NEW aurait été plus significatif.  

CONFORMITÉIndex

SVr4, POSIX.1-2001.  

NOTES SUR LINUXIndex

Jusqu'à la version 2.3.20, Linux renvoyait EIDRM pour un msgget() sur une file de messages prête à être supprimée.  

VOIR AUSSIIndex

msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), svipc(7)  

TRADUCTIONIndex

Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS