Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       msgctl - Controler 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'operation indiquee par cmd sur la
       file de messages ayant l'identifiant msqid.

       La structure msqid_ds est declaree dans <sys/msg.h> comme suit :

           struct msqid_ds {
               struct ipc_perm msg_perm;     /* Proprietaire 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 derniere 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
                                               autorises 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 definie dans <sys/ipc.h> de la facon suivante
       (les champs en gras peuvent etre modifies en utilisant IPC_SET) :

           struct ipc_perm {
               key_t          __key;       /* Cle fournie a msgget(2) */
               uid_t          uid;         /* UID effectif du proprietaire */
               gid_t          gid;         /* GID effectif du proprietaire */
               uid_t          cuid;           /* UID effectif du createur */
               gid_t          cgid;        /* GID effectif du createur */
               unsigned short mode;       /* Permissions */
               unsigned short __seq;       /* Numero de sequence */
           };

       Les valeurs autorisees pour cmd sont :

       IPC_STAT
              Copier les informations depuis la structure representant la file
              de messages identifiee par  msqid  dans  la  structure  msqid_ds
              pointee par buf. L'appelant doit avoir des privileges d'acces en
              lecture sur la file de messages.

       IPC_SET
              Ecrire la valeur de certains champs  de  la  structure  msqid_ds
              pointee  par buf dans la structure du noyau representant la file
              de messages, en mettant a jour le champ  msg_ctime.  Les  champs
              suivants  de  la structure peuvent etre mis a 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 etre
              soit  celui  du  proprietaire  (msg_perm.uid),  soit  celui   du
              createur  (msg_perm.cuid)  de  la  file  de  messages,  ou  bien
              l'appelant doit etre  privilegie.  Des  privileges  particuliers
              (sous Linux, la capacite CAP_IPC_RESOURCE) sont necessaires pour
              augmenter la valeur de  msg_qbytes  au-dessus  de  la  constante
              systeme MSGMNB.

       IPC_RMID
              Effacer  immediatement  la file de messages et ses structures de
              donnees, en reveillant tous les processus ecrivains et  lecteurs
              en  attente.  Ils obtiendront un code d'erreur, et errno aura la
              valeur EIDRM. L'UID effectif du  processus  appelant  doit  etre
              celui  du createur ou du proprietaire de la file de messages, ou
              bien le processus appelant doit etre privilegie.

       IPC_INFO (specifique a Linux)
              Renvoie des  informations  sur  les  limites  et  parametres  du
              systeme relatifs aux files de messages dans la structure pointee
              par buf. Cette structure est de type msginfo (ce  qui  necessite
              un  transtypage),  qui  est  defini dans <sys/msg.h> si la macro
              _GNU_SOURCE est definie :

                  struct msginfo {
                      int msgpool; /* Taille en kibi-octets du tampon utilise
                                      pour stocker les donnees des messages ;
                                      pas utilise par le noyau */
                      int msgmap;  /* Nombre maximal d'entrees dans la table
                                      des messages ; pas utilise par le noyau */
                      int msgmax;  /* Nombre maximal d'octets pouvant etre
                                      ecrits dans un seul message */
                      int msgmnb;  /* Nombre maximal d'octets pouvant etre ecrits dans
                                      une file ; utilise pour initialiser msg_qbytes
                                      lors de la creation de la file (msgget(2)) */
                      int msgmni;  /* Nombre maximal de files de message */
                      int msgssz;  /* Taille du segment de message ;
                                      pas utilise par le noyau */
                      int msgtql;  /* Nombre maximal de messages dans toutes les files
                                      du systeme ; pas utilise par le noyau */
                      unsigned short int msgseg;
                                   /* Nombre maximal de segments ;
                                      pas utilise par le noyau */
                  };

              Les parametres msgmni, msgmax et msgmnb  peuvent  etre  modifies
              via  les fichiers du meme nom dans /proc. Consultez proc(5) pour
              plus de details.

       MSG_INFO (Specifique a Linux)
              Renvoie une structure msginfo contenant les  memes  informations
              que  pour IPC_INFO, sauf que les champs suivants contiennent des
              informations sur les ressources systeme utilisees par des  files
              de  messages :  le  champ  msgpool indique le nombre de files de
              messages existant actuellement sur le systeme ; le champ  msgmap
              contient  le  nombre total de messages dans l'ensemble des files
              du systeme ; enfin le champ  msgtql  contient  le  nombre  total
              d'octets dans tous les messages de toutes les files du systeme.

       MSG_STAT (Specifique a 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 systeme.

VALEUR RENVOY'EE

       Si elles reussissent, les  operations  IPC_STAT,  IPC_SET  et  IPC_RMID
       renvoient 0. Une operation IPC_INFO ou MSG_INFO reussie renvoie le plus
       grand indice d'un element  utilise  dans  la  table  interne  du  noyau
       contenant des informations sur les files de messages. Cette information
       peut etre utilisee par des operations MSG_STAT repetees afin  d'obtenir
       des  informations  sur  toutes  les  files  du  systeme.  Une operation
       MSG_STAT reussie renvoie l'identifiant de la file dont  l'indice  etait
       donne dans msqid.

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

ERREURS

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

       EACCES L'argument cmd reclame l'operation IPC_STAT ou MSG_STAT, mais le
              processus appelant n'a pas d'acces en lecture  sur  la  file  de
              messages msqid, et n'a pas la capacite CAP_IPC_OWNER.

       EFAULT L'argument  cmd reclame l'operation IPC_SET ou IPC_STAT mais buf
              pointe en dehors de l'espace d'adressage accessible.

       EIDRM  La file de messages a ete supprimee.

       EINVAL cmd ou msqid ont une valeur illegale.  Ou  alors,  dans  le  cas
              d'une  operation  MSG_STAT,  la valeur indiquee par msqid pointe
              vers un element de tableau qui n'est pas en cours d'utilisation.

       EPERM  L'argument cmd reclame  l'operation  IPC_SET  ou  IPC_RMID  mais
              l'UID  effectif  du  processus  appelant  n'est  pas le createur
              (comme indique dans msg_perm.cuid)  ou  le  proprietaire  (comme
              indique  dans  msg_perm.uid)  de  la  file  de  messages,  et le
              processus n'est pas  privilegie  (sous  Linux,  il  n'a  pas  la
              capacite CAP_SYS_ADMIN).

CONFORMIT'E

       SVr4, POSIX.1-2001.

NOTES

       Les  appels  IPC_INFO,  MSG_STAT  et  MSG_INFO  sont  utilises  par  le
       programme ipcs(1) pour fournir  des  informations  sur  les  ressources
       allouees.  A  l'avenir,  ceci  pourra  etre modifie ou remplace par une
       interface avec le systeme de fichiers /proc.

       Divers champs de la structure struct msqid_ds  etaient  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 ulterieure  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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

Linux                             6 aout 2008                        MSGCTL(2)