mq_receive(3) Library Functions Manual mq_receive(3) NOM mq_receive, mq_timedreceive - Recevoir un message d'une file de messages BIBLIOTHEQUE Bibliotheque de temps reel (librt, -lrt) SYNOPSIS #include ssize_t mq_receive(mqd_t mqdes, char msg_ptr[.msg_len], size_t msg_len, unsigned int *msg_prio); #include #include ssize_t mq_timedreceive(mqd_t mqdes, char *restrict msg_ptr[.msg_len], size_t msg_len, unsigned int *restrict msg_prio, const struct timespec *restrict abs_timeout); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : mq_timedreceive() : _POSIX_C_SOURCE >= 200112L DESCRIPTION mq_receive() supprime le plus vieux message avec la plus haute priorite de la file de messages referencee par le descripteur de file de messages mqdes, et le place dans un tampon pointe par msg_ptr. L'argument msg_len indique la taille du tampon pointe par msg_ptr ; celui-ci doit etre plus large ou aussi grand que l'attribut mq_msgsize de la file (consulter mq_getattr(3)). Si msg_prio est non NULL, alors le tampon vers lequel il pointe est utilise pour renvoyer la priorite associee au message recu. Si la file est vide, alors par defaut, 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 active dans la description de file de messages, alors l'appel echouera immediatement avec l'erreur EAGAIN. mq_timedreceive() se comporte comme mq_receive(), excepte que si la file est vide et si le drapeau O_NONBLOCK n'est pas active dans la description de la file de messages, alors abs_timeout pointe vers une structure qui specifie un temps pendant lequel l'appel sera bloque. Cette limite est un delai absolu en secondes et nanosecondes depuis l'epoque, 1er janvier 1970 a 00:00:00 +0000 (UTC), specifie dans une structure timespec(3). Si aucun message n'est disponible et si le delai d'attente a deja expire pendant la duree de l'appel, mq_timedreceive() s'acheve immediatement. VALEUR RENVOYEE En cas de succes, mq_receive() et mq_timedreceive() renvoient le nombre d'octets du message recu. En cas d'erreur, -1 est renvoye et errno indique l'erreur. ERREURS EAGAIN La file est vide et le drapeau O_NONBLOCK etait defini pour la file de messages referencee par le descripteur mqdes. EBADF Le descripteur specifie dans mqdes n'est pas valable ou n'est pas ouvert en lecture. EINTR L'appel a ete interrompu par un gestionnaire de signal ; consultez signal(7). EINVAL L'appel devrait etre bloque et abs_timeout n'est pas valable, soit car tv_sec est inferieur a zero, ou soit car tv_nsec est inferieur a zero ou plus grand que 1000 millions. EMSGSIZE msg_len etait plus petit que l'attribut mq_msgsize de la file de messages. ETIMEDOUT Le delai d'attente de l'appel a expire avant que le message ait ete transfere. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |mq_receive(), mq_timedreceive() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ VERSIONS Sous Linux, mq_timedreceive() est un appel systeme et mq_receive() est une fonction de bibliotheque au dessus de la couche des appels systemes. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. VOIR AUSSI mq_close(3), mq_getattr(3), mq_notify(3), mq_open(3), mq_send(3), mq_unlink(3), timespec(3), mq_overview(7), time(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 mq_receive(3)