Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       msgctl - Contrôler les messages

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
       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 de 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 dans <sys/ipc.h> 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 _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

       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.32 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction  francophone  au  sein  du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL: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> ».