Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

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);

       Éditer les liens avec -lrt.

DESCRIPTION

       Les  fonctions  mq_getattr()  et  mq_setattr()  extraient  et modifient respectivement les
       attributs de la file de messages référencée par le descripteur 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 messages est créée avec
       mq_open(3). Le champ mq_maxmsg est le nombre maximal 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  informations  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
       oldattr est non NULL, alors le tampon qu'il pointe est utilisé pour renvoyer 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_NONBLOCK.

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 │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

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

NOTES

       Sous  Linux, mq_getattr() et mq_setattr()  sont des fonctions de bibliothè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 <mqueue.h>
       #include <sys/stat.h>
       #include <fcntl.h>
       #include <stdio.h>
       #include <stdlib.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, S_IRUSR | S_IWUSR, 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)

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.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.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.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⟩.