Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       mq_receive, mq_timedreceive - Recevoir un message d'une file de messages

SYNOPSIS

       #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);

       Effectuez l'édition des liens avec l'option -lrt.

   Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

       mq_timedreceive() :
           _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L

DESCRIPTION

       mq_receive() supprime le plus vieux message avec la plus haute priorité de la file de messages référencée
       par mqdes, et le place dans un tampon pointé par msg_ptr. L'argument msg_len indique la taille du  tampon
       pointé  par  msg_ptr ;  celui-ci doit être plus large ou aussi grand que l'attribut mq_msgsize de la file
       (consultez mq_getattr(3)). Si msg_prio est non NULL, alors le tampon vers lequel il  pointe  est  utilisé
       pour renvoyer la priorité associée au message reçu.

       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()  se  comporte  comme  mq_receive(),  excepté  que  si la file est vide et si le drapeau
       O_NONBLOCK n'est pas activé dans la description de la file de messages, alors abs_timeout pointe vers une
       structure  qui  spécifie un temps pendant lequel l'appel sera bloqué. Cette limite est un délai absolu en
       secondes et nanosecondes depuis l'époque, 1er janvier 1970 à 00:00:00 (UTC), spécifié dans  la  structure
       suivante :

           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  Le descripteur spécifié dans mqdes n'est pas valable.

       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é.

CONFORMITÉ

       POSIX.1-2001.

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 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».