mq_getattr()
et
mq_setattr()
récupère et modifie, respectivement,
les attributs d'une file de messages référencée par le descripteur
mqdes.
mq_getattr()
renvoie une structure
mq_attr
dans le tampon pointé par
attr.
La structure est définie ainsi :
struct mq_attr {
long mq_flags; /* Flags: 0 or O_NONBLOCK */
long mq_maxmsg; /* Max. # of messages on queue */
long mq_msgsize; /* Max. message size (bytes) */
long mq_curmsgs; /* # of messages currently in queue */
};
Le champ
mq_flags
contient les attributs associés à la description
de la file de messages ouverte.
Ce champ est initialisé à la création de la file avec
mq_open(3).
Le seul attribut qui peut apparaître dans ce champ est
O_NONBLOCK.
Les champs
mq_maxmsg
et
mq_msgsize
sont remplis lorsque la file de messages est créée par
mq_open(3).
Le champ
mq_maxmsg
est la limite haute du nombre de messages
qui peuvent être placés dans la file avec
mq_send(3).
Le champ
mq_msgsize
est la limite haute de la taille des messages
qui peuvent être placés dans la file.
Ces deux champs doivent avoir une valeur supérieure à zéro.
Deux fichiers
Two
/proc
qui placent les plafonds sur ces valeurs de champs sont décrits dans
mq_open(3).
Le champ
mq_curmsgs
renvoie le nombre de messages actuellement dans la file.
mq_setattr()
définit les attributs de la file de messages
en utilisant les informations fournies dans la structure
mq_attr
pointée par
newattr.
Le seul attribut qui puisse être modifié est l'attribut
O_NONBLOCK
dans
mq_flags.
Les autres champs de
newattr
sont ignorés.
Si le champ
oldattr
n'est pas NULL,
le tampon sur lequel il pointe est utilisé pour renvoyer une structure
mq_attr
qui contient la même information renvoyée par
mq_getattr().