mq_getattr
Table des matières
Retour à l'index
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).
| Interface | Attribut | Valeur
|
|
mq_getattr(),
mq_setattr()
| Sécurité des threads | MT-Safe
|
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, "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 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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- ATTRIBUTS
-
- VERSIONS
-
- STANDARDS
-
- HISTORIQUE
-
- EXEMPLES
-
- Source du programme
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:20 GMT, September 19, 2025