focal (2) msgctl.2.gz

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