dwww Home | Manual pages | Find package

mq_getattr(3)              Library Functions Manual              mq_getattr(3)

NOM
       mq_getattr,  mq_setattr  -  Lire  et écrire les attributs d'une file de
       messages

BIBLIOTHÈQUE
       Bibliothèque de temps réel (librt, -lrt)

SYNOPSIS
       #include <mqueue.h>

       int mq_getattr(mqd_t mqdes, struct mq_attr *attr);
       int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict newattr,
                      struct mq_attr *restrict oldattr);

DESCRIPTION
       Les fonctions mq_getattr() et mq_setattr() extraient et modifient  res-
       pectivement les attributs de la file de messages référencée par le des-
       cripteur de file de messages mqdes.

       mq_getattr() renvoie une structure mq_attr dans le  tampon  pointé  par
       attr. Cette structure est définie comme suit :

           struct mq_attr {
               long mq_flags;       /* Drapeaux : 0 or O_NONBLOCK */
               long mq_maxmsg;      /* Max. # de messages dans la file */
               long mq_msgsize;     /* Max de la taille du message (octets) */
               long mq_curmsgs;     /* # de messages actuellement dans la file */
           };

       Le champ mq_flags contient des drapeaux associés à la description de la
       file de messages ouverte. Ce champ est initialisé lorsque la  file  est
       créée  avec  mq_open(3).  Le  seul  drapeau qui peut apparaître dans ce
       champ est O_NONBLOCK.

       Les champs mq_maxmsg et mq_msgsize sont définis lorsque la file de mes-
       sages est créée avec mq_open(3). Le champ mq_maxmsg est le nombre maxi-
       mal de messages qui peuvent être placés dans la file  avec  mq_send(3).
       Le  champ  mq_msgsize  est  la taille maximale des messages qui peuvent
       être placés dans la file. Chacun de ces champs doit  avoir  une  valeur
       supérieure  à  zéro.  Deux fichiers de /proc qui plafonnent ces valeurs
       pour ces champs sont décrites dans mq_overview(7).

       Le champ mq_curmsgs renvoie le nombre de messages actuellement dans  la
       file.

       mq_setattr()  définit les attributs de la file de messages avec les in-
       formations fournies par la structure mq_attr pointée  par  newattr.  Le
       seul  attribut  qui  peut  être  modifié  est  le drapeau O_NONBLOCK de
       mq_flags. Les autres champs de newattr sont ignorés. Si  le  champ  ol-
       dattr  est non NULL, alors le tampon qu'il pointe est utilisé pour ren-
       voyer une structure mq_attr contenant les  mêmes  informations  que  la
       fonction mq_getattr() renverrait.

VALEUR RENVOYÉE
       En  cas  de  succès,  mq_getattr()  et mq_setattr() renvoient 0. En cas
       d'erreur, elles renvoient -1 et définissent errno en conséquence.

ERREURS
       EBADF  Le descripteur de file de messages spécifié dans mqdes n'est pas
              valable.

       EINVAL newattr->mq_flags  contient  des  bits définis autres que O_NON-
              BLOCK.

ATTRIBUTS
       Pour une explication des termes utilisés dans cette section,  consulter
       attributes(7).

       ┌─────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├─────────────────────────────────────┼──────────────────────┼─────────┤
       │mq_getattr(), mq_setattr()           │ Sécurité des threads │ MT-Safe │
       └─────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

NOTES
       Sous Linux, mq_getattr() et mq_setattr()  sont des fonctions de biblio-
       thèque au dessus de l'appel système mq_getsetattr(2).

EXEMPLES
       Le programme ci-dessous peut être utilisé pour afficher les valeurs par
       défaut  de mq_maxmsg et mq_msgsize assignées à une file de messages qui
       est créée avec un appel à mq_open(3) dans lequel le paramètre est NULL.
       Voici un exemple d'exécution du programme.

           $ ./a.out /testq
           Maximum # of messages on queue:   10
           Maximum message size:             8192

       Depuis  Linux 3.5,  les  fichiers  suivants  de  /proc  (décrits  dans)
       mq_overview(7)) peuvent être utilisés pour contrôler  les  valeurs  par
       défaut :

           $ uname -sr
           Linux 3.8.0
           $ cat /proc/sys/fs/mqueue/msg_default
           10
           $ cat /proc/sys/fs/mqueue/msgsize_default
           8192

   Source du programme

       #include <fcntl.h>
       #include <mqueue.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <sys/stat.h>
       #include <unistd.h>

       #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \
                               } while (0)

       int
       main(int argc, char *argv[])
       {
           mqd_t mqd;
           struct mq_attr attr;

           if (argc != 2) {
               fprintf(stderr, "Usage: %s mq-name\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           mqd = mq_open(argv[1], O_CREAT | O_EXCL, 0600, NULL);
           if (mqd == (mqd_t) -1)
               errExit("mq_open");

           if (mq_getattr(mqd, &attr) == -1)
               errExit("mq_getattr");

          printf("Nbre maximal de messages de la file : %ld\n", attr.mq_maxmsg);
          printf("Taille maximale de message :          %ld\n", attr.mq_msgsize);

           if (mq_unlink(argv[1]) == -1)
               errExit("mq_unlink");

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI
       mq_close(3),   mq_notify(3),   mq_open(3),  mq_receive(3),  mq_send(3),
       mq_unlink(3), mq_overview(7)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Gué-
       rard <fevrier@tigreraye.org>, Jean-Luc  Coulon  (f5ibh)  <jean-luc.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la        GNU        General       Public       License       version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant  les  conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03  15 décembre 2022                  mq_getattr(3)

Generated by dwww version 1.15 on Sat Jun 29 01:53:30 CEST 2024.