mq_send()
ajoute le message pointé par
msg_ptr
à la file de messages référencée par le descripteur
mqdes.
L'argument
msg_len
spécifie la longueur du message pointé par
msg_ptr ;
cette longueur doit être inférieure ou égale à l'attribut
mq_msgsize
de la file.
Les messages de longueur nulle sont autorisés
L'argument
msg_prio
est un entier positif ou nul qui spécifie la priorité de ce mesage.
Les mesages sont placés dans la file par ordre décroissant de priorité,
avec les nouveaux messages de même priorité placé après les plus vieux
messages de même priorité.
Si la file de messages est déjà pleine (c'est-à-dire que le nombre
de messages dans la file est égal à l'attribut
mq_maxmsg
de la file), alors, par défaut,
mq_send()
bloquera jusqu'à ce que suffisamment d'espace ne devienne disponible
pour permette l'ajout du message dans la file, ou jusqu'à ce que l'appel
ne soit interrompu par un gestionnaire de signaux.
Si l'attribut
O_NONBLOCK
est activé pour la description ded la file de messages,
l'appel échouera immédiatement avec l'erreur
EAGAIN.
mq_timedsend()
se comporte comme
mq_send(),
excepté que si la file est pleine et que l'attribut
O_NONBLOCK
n'est pas activé pour la description de la file de messages,
abs_timeout
pointe sur une structure qui spécifie un plafond sur le temps pendant
lequel l'appel bloquera.
Le plafond est un délai absolu en secondes et nanosecondes
depuis l'Époque (minuit du matin du 1er janvier 1970)
spécifié dans la structure suivante :
struct timespec {
time_t tv_sec; /* secondes */
long tv_nsec; /* nanosecondes */
};
Si la file de messages est pleine et que le délai a expiré
mq_timedsend()
revient immédiatement.