Loading

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 *msg_prio);

       #define _XOPEN_SOURCE 600
       #include <time.h>
       #include <mqueue.h>

       ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr,
                          size_t msg_len, unsigned *msg_prio,
                          const struct timespec *abs_timeout);

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

       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 spécifie  la  taille  du  tampon
       pointé  par  msg_ptr ;  celui-ci  doit  être  plus large que l’attribut
       mq_msgsize de la file (voyez mq_getattr(3)).  Si  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 actif pour la
       description de la file de messages, alors abs_timeout pointe  vers  une
       structure  qui  spécifie une limite de l’heure jusqu’à laquelle l’appel
       sera  bloqué.  Cette  limite  est  un  délai  absolu  en  secondes   et
       nanosecondes  depuis Epoch (00 h 00 du 1er janvier 1970), 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 ; voir
              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), feature_test_macros(7), mq_overview(7), time(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

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