mq_getattr(3) Library Functions Manual mq_getattr(3) NOM mq_getattr, mq_setattr - Lire et ecrire les attributs d'une file de messages BIBLIOTHEQUE Bibliotheque de temps reel (librt, -lrt) SYNOPSIS #include 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 respectivement les attributs de la file de messages referencee par le descripteur de file de messages mqdes. mq_getattr() renvoie une structure mq_attr dans le tampon pointe par attr. Cette structure est definie 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 associes a la description de la file de messages ouverte. Ce champ est initialise lorsque la file est creee avec mq_open(3). Le seul drapeau qui peut apparaitre dans ce champ est O_NONBLOCK. Les champs mq_maxmsg et mq_msgsize sont definis lorsque la file de messages est creee avec mq_open(3). Le champ mq_maxmsg est le nombre maximal de messages qui peuvent etre places dans la file avec mq_send(3). Le champ mq_msgsize est la taille maximale des messages qui peuvent etre places dans la file. Chacun de ces champs doit avoir une valeur superieure a zero. Deux fichiers de /proc qui plafonnent ces valeurs pour ces champs sont decrites dans mq_overview(7). Le champ mq_curmsgs renvoie le nombre de messages actuellement dans la file. mq_setattr() definit les attributs de la file de messages avec les informations fournies par la structure mq_attr pointee par newattr. Le seul attribut qui peut etre modifie est le drapeau O_NONBLOCK de mq_flags. Les autres champs de newattr sont ignores. Si le champ oldattr est non NULL, alors le tampon qu'il pointe est utilise pour renvoyer une structure mq_attr contenant les memes informations que la fonction mq_getattr() renverrait. VALEUR RENVOYEE En cas de succes, mq_getattr() et mq_setattr() renvoient 0. En cas d'erreur, elles renvoient -1 et definissent errno en consequence. ERREURS EBADF Le descripteur de file de messages specifie dans mqdes n'est pas valable. EINVAL newattr->mq_flags contient des bits definis autres que O_NONBLOCK. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |mq_getattr(), mq_setattr() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ VERSIONS Sous Linux, mq_getattr() et mq_setattr() sont des fonctions de bibliotheque au dessus de l'appel systeme mq_getsetattr(2). STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. EXEMPLES Le programme ci-dessous peut etre utilise pour afficher les valeurs par defaut de mq_maxmsg et mq_msgsize assignees a une file de messages qui est creee avec un appel a mq_open(3) dans lequel le parametre est NULL. Voici un exemple d'execution du programme. $ ./a.out /testq Maximum # of messages on queue: 10 Maximum message size: 8192 Depuis Linux 3.5, les fichiers suivants de /proc (decrits dans) mq_overview(7)) peuvent etre utilises pour controler les valeurs par defaut : $ 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 #include #include #include #include #include #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("Maximum # of messages on queue: %ld\n", attr.mq_maxmsg); printf("Maximum message size: %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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 mq_getattr(3)