Man page - mq_getattr(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

mq_getattr

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

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

Image grohtml-3872620-1.png

VERSIONS

Sous Linux, mq_getattr () et mq_setattr () sont des fonctions de bibliothùque au dessus de l’appel systùme mq_getsetattr (2).

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001.

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
Nbre maximal de messages de la file : 10
Taille maximale de message : 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, "Utilisation : %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 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 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 .