table of contents
- buster-backports 4.10.0-1~bpo10+1
- testing 4.10.0-1
- unstable 4.10.0-1
MQ_RECEIVE(3) | Manuel du programmeur Linux | MQ_RECEIVE(3) |
NOM¶
mq_receive, mq_timedreceive - Recevoir un message d'une file de messagesSYNOPSIS¶
#include <mqueue.h>
ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio);
#include <time.h> #include <mqueue.h>
ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio, const struct timespec *abs_timeout);
Éditer les liens avec -lrt.
Exigences de macros de test de fonctionnalités pour la glibc (consulter
feature_test_macros(7)) :
mq_timedreceive() :
DESCRIPTION¶
mq_receive() removes the oldest message with the highest priority from the message queue referred to by the message queue descriptor mqdes, and places it in the buffer pointed to by msg_ptr. The msg_len argument specifies the size of the buffer pointed to by msg_ptr; this must be greater than or equal to the mq_msgsize attribute of the queue (see mq_getattr(3)). If msg_prio is not NULL, then the buffer to which it points is used to return the priority associated with the received message.Si la file est vide, alors par défaut, mq_receive() bloque tant qu'aucun message n'est disponible, ou que l'appel n'est pas interrompu par un gestionnaire de signaux. Si le drapeau O_NONBLOCK est activé dans la description de file de messages, alors l'appel échouera immédiatement avec l'erreur EAGAIN.
mq_timedreceive() behaves just like mq_receive(), except that if the queue is empty and the O_NONBLOCK flag is not enabled for the message queue description, then abs_timeout points to a structure which specifies how long the call will block. This value is an absolute timeout in seconds and nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC), specified in the following structure:
struct timespec { time_t tv_sec; /* secondes */ long tv_nsec; /* nanosecondes */ };
Si aucun message n'est disponible et si le délai d'attente a déjà expiré pendant la durée de l'appel, mq_timedreceive() s'achève immédiatement.
VALEUR RENVOYÉE¶
En cas de succès, mq_receive() et mq_timedreceive() renvoient le nombre d'octets du message reçu. En cas d'erreur, -1 est renvoyé et errno indique l'erreur.ERREURS¶
- EAGAIN
- La file est vide et le drapeau O_NONBLOCK était défini pour la file de messages référencée par le descripteur mqdes.
- EBADF
- The descriptor specified in mqdes was invalid or not opened for reading.
- EINTR
- L'appel a été interrompu par un gestionnaire de signal ; consultez signal(7).
- EINVAL
- L'appel devrait être bloqué, et abs_timeout n'est pas valable, soit car tv_sec est inférieur à zéro, ou soit car tv_nsec est inférieur à zéro ou plus grand que 1000 millions.
- EMSGSIZE
- msg_len était plus petit que l'attribut mq_msgsize de la file de messages.
- ETIMEDOUT
- Le délai d'attente de l'appel a expiré avant que le message ait été transféré.
ATTRIBUTS¶
Pour une explication des termes utilisés dans cette section, consulter attributes(7).Interface | Attribut | Valeur |
mq_receive(), mq_timedreceive() | Sécurité des threads | MT-Safe |
CONFORMITɶ
POSIX.1-2001, POSIX.1-2008.NOTES¶
Sous Linux, mq_timedreceive() est un appel système et mq_receive() est une fonction de bibliothèque au dessus de la couche des appels systèmes.VOIR AUSSI¶
mq_close(3), mq_getattr(3), mq_notify(3), mq_open(3), mq_send(3), mq_unlink(3), mq_overview(7), time(7)COLOPHON¶
Cette page fait partie de la publication 5.04 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.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> et David Prévot <david@tilapin.org>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.
15 septembre 2017 | Linux |