Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       msgctl - Contrôler les messages System V

SYNOPSIS

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

       int msgctl(int msqid, int cmd, struct msqid_ds *buf);

DESCRIPTION

       Cette  fonction  permet  d'effectuer  l'opération indiquée par cmd sur la file de messages System V ayant
       l'identifiant msqid.

       La structure msqid_ds est déclarée dans <sys/msg.h> comme suit :

           struct msqid_ds {
               struct ipc_perm msg_perm;     /* Propriétaire et permissions */
               time_t          msg_stime;    /* Heure du dernier msgsnd(2) */
               time_t          msg_rtime;    /* Heure du dernier msgrcv(2) */
               time_t          msg_ctime;    /* Heure dernière modification */
               unsigned long   __msg_cbytes; /* Nombre actuel d'octets dans la
                                                file (non standard) */
               msgqnum_t       msg_qnum;     /* Nombre actuel de messages
                                                dans la file */
               msglen_t        msg_qbytes;   /* Nombre maximal d'octets
                                                autorisés dans la file */
               pid_t           msg_lspid;    /* PID du dernier msgsnd(2) */
               pid_t           msg_lrpid;    /* PID du dernier msgrcv(2) */
           };

       La structure ipc_perm est définie de la façon suivante (les champs  en  gras  peuvent  être  modifiés  en
       utilisant IPC_SET) :

           struct ipc_perm {
               key_t          __key;       /* Clé fournie à msgget(2) */
               uid_t          uid;         /* UID effectif du propriétaire */
               gid_t          gid;         /* GID effectif du propriétaire */
               uid_t          cuid;        /* UID effectif du créateur */
               gid_t          cgid;        /* GID effectif du créateur */
               unsigned short mode;        /* Permissions */
               unsigned short __seq;       /* Numéro de séquence */
           };

       Les valeurs autorisées pour cmd sont :

       IPC_STAT
              Copier  les informations depuis la structure représentant la file de messages identifiée par msqid
              dans la structure msqid_ds pointée par buf.  L'appelant  doit  avoir  des  privilèges  d'accès  en
              lecture sur la file de messages.

       IPC_SET
              Écrire  la valeur de certains champs de la structure msqid_ds pointée par buf dans la structure du
              noyau représentant la file de messages, en mettant à jour le champ msg_ctime. Les champs  suivants
              de  la structure peuvent être mis à jour : msg_qbytes, msg_perm.uid, msg_perm.gid et les 9 bits de
              poids faible de msg_perm.mode. L'UID effectif du  processus  appelant  doit  être  soit  celui  du
              propriétaire  (msg_perm.uid),  soit  celui  du créateur (msg_perm.cuid) de la file de messages, ou
              bien l'appelant doit être  privilégié.  Des  privilèges  particuliers  (sous  Linux,  la  capacité
              CAP_IPC_RESOURCE)  sont  nécessaires  pour  augmenter  la  valeur  de  msg_qbytes  au‐dessus de la
              constante système MSGMNB.

       IPC_RMID
              Effacer immédiatement la file de messages et ses structures de données,  en  réveillant  tous  les
              processus  écrivains  et  lecteurs  en attente. Ils obtiendront un code d'erreur, et errno aura la
              valeur EIDRM. L'UID effectif du processus appelant doit être celui du créateur ou du  propriétaire
              de la file de messages, ou bien le processus appelant doit être privilégié.

       IPC_INFO (spécifique à Linux)
              Renvoie  des  informations sur les limites et paramètres du système relatifs aux files de messages
              dans la structure pointée par buf. Cette structure est  de  type  msginfo  (ce  qui  nécessite  un
              transtypage),  qui  est défini dans <sys/msg.h> si la macro de test de fonctionnalités _GNU_SOURCE
              est définie :

                  struct msginfo {
                      int msgpool; /* Taille en kibioctets du tampon utilisé
                                      pour stocker les données des messages ;
                                      pas utilisé par le noyau */
                      int msgmap;  /* Nombre maximal d'entrées dans la table
                                      des messages ; pas utilisé par le noyau */
                      int msgmax;  /* Nombre maximal d'octets pouvant être
                                      écrits dans un seul message */
                      int msgmnb;  /* Nombre maximal d'octets pouvant être
                                      écrits dans une file ; utilisé pour
                                      initialiser msg_qbytes lors de la
                                      création de la file (msgget(2)) */
                      int msgmni;  /* Nombre maximal de files de message */
                      int msgssz;  /* Taille du segment de message ;
                                      pas utilisé par le noyau */
                      int msgtql;  /* Nombre maximal de messages dans
                                      toutes les files du système ;
                                      pas utilisé par le noyau */
                      unsigned short int msgseg;
                                   /* Nombre maximal de segments ;
                                      pas utilisé par le noyau */
                  };

              Les paramètres msgmni, msgmax et msgmnb peuvent être modifiés via les fichiers du  même  nom  dans
              /proc. Consultez proc(5) pour plus de détails.

       MSG_INFO (Spécifique à Linux)
              Renvoie  une  structure  msginfo  contenant les mêmes informations que pour IPC_INFO, sauf que les
              champs suivants contiennent des informations sur les ressources système utilisées par des files de
              messages :  le  champ  msgpool indique le nombre de files de messages existant actuellement sur le
              système ; le champ msgmap contient le nombre total  de  messages  dans  l'ensemble  des  files  du
              système ; enfin le champ msgtql contient le nombre total d'octets dans tous les messages de toutes
              les files du système.

       MSG_STAT (Spécifique à Linux)
              Renvoie une structure  msqid_ds  comme  pour  IPC_STAT.  Cependant,  l'argument  msqid  n'est  pas
              l'identifiant  d'une  file,  mais  un  indice  dans  le  tableau interne au noyau qui contient des
              informations sur toutes les files de messages du système.

VALEUR RENVOYÉE

       Si elles réussissent, les opérations IPC_STAT, IPC_SET et IPC_RMID renvoient 0. Une opération IPC_INFO ou
       MSG_INFO  réussie  renvoie  le  plus  grand  indice  d'un  élément utilisé dans la table interne du noyau
       contenant des informations sur les files de messages.  Cette  information  peut  être  utilisée  par  des
       opérations  MSG_STAT  répétées  afin  d'obtenir  des  informations  sur  toutes les files du système. Une
       opération MSG_STAT réussie renvoie l'identifiant de la file dont l'indice était donné dans msqid.

       En cas d'erreur -1 est renvoyé, et errno contient le code d'erreur.

ERREURS

       En cas d'erreur, errno prend l'une des valeurs suivantes :

       EACCES L'argument cmd réclame l'opération IPC_STAT ou  MSG_STAT,  mais  le  processus  appelant  n'a  pas
              d'accès en lecture sur la file de messages msqid, et n'a pas la capacité CAP_IPC_OWNER.

       EFAULT L'argument  cmd  réclame  l'opération  IPC_SET  ou  IPC_STAT mais buf pointe en dehors de l'espace
              d'adressage accessible.

       EIDRM  La file de messages a été supprimée.

       EINVAL cmd ou msqid ont une valeur illégale. Ou alors, dans le cas d'une opération  MSG_STAT,  la  valeur
              indiquée par msqid pointe vers un élément de tableau qui n'est pas en cours d'utilisation.

       EPERM  L'argument  cmd  réclame l'opération IPC_SET ou IPC_RMID mais l'UID effectif du processus appelant
              n'est pas le créateur (comme indiqué dans msg_perm.cuid) ou le propriétaire  (comme  indiqué  dans
              msg_perm.uid) de la file de messages, et le processus n'est pas privilégié (sous Linux, il n'a pas
              la capacité CAP_SYS_ADMIN).

CONFORMITÉ

       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.

       Les  appels  IPC_INFO,  MSG_STAT  et  MSG_INFO  sont  utilisés  par le programme ipcs(1) pour fournir des
       informations sur les ressources allouées. À l'avenir, ceci  pourra  être  modifié  ou  remplacé  par  une
       interface avec le système de fichiers /proc.

       Divers  champs  de  la  structure struct msqid_ds étaient de type short sous Linux 2.2 et sont devenus de
       type long sous Linux 2.4. Pour en profiter, une recompilation avec la glibc 2.1.91 ou ultérieure  devrait
       suffire. (Le noyau distingue les appels anciens et nouveaux par un drapeau IPC_64 dans cmd.)

VOIR AUSSI

       msgget(2), msgrcv(2), msgsnd(2), capabilities(7), mq_overview(7), svipc(7)

COLOPHON

       Cette page fait partie de la publication 3.57 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> ».