Provided by: manpages-fr-dev_3.65d1p1-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_SYS_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é. Le troisième argument de msgctl() est dans
              ce cas ignoré.

       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
              l'appelant n'est pas privilégié (sous Linux, il n'a pas la capacité CAP_SYS_ADMIN).

       EPERM  Il  a  été  tenté (via IPC_SET) d'augmenter msg_qbytes au-delà du paramètre système
              MSGMNB, mais l'appelant n'est pas privilégié (sous Linux, il n'a  pas  la  capacité
              CAP_SYS_RESOURCE).

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.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> ».