Loading

NOM

       mq_send, mq_timedsend - Envoyer un message à une file de messages

SYNOPSIS

       #include <mqueue.h>

       mqd_t mq_send(mqd_t mqdes, const char *msg_ptr,
                     size_t msg_len, unsigned msg_prio);

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

       mqd_t mq_timedsend(mqd_t mqdes, const 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_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 permis.

       L’argument  msg_prio est un entier non négatif qui spécifie la priorité
       de ce message. Les messages sont  placés  dans  la  file  en  ordre  de
       priorité  décroissante.  Les  nouveaux  messages  avec la même priorité
       seront placés après les anciens messages de même priorité.

       Si la file de messages est déjà pleine (c’est-à-dire que le  nombre  de
       messages  de la file est égal à l’attribut mq_maxmsg de la file), alors
       par défaut, mq_send() bloque tant qu’il n’y a  pas  d’espace  suffisant
       pour  placer  un  message  dans  la file ou jusqu’à ce que l’appel soit
       interrompu par un gestionnaire de signaux. Si le drapeau O_NONBLOCK est
       activé pour la description de la file de messages, alors l’appel échoue
       immédiatement avec l’erreur EAGAIN.

       mq_timedsend() se comporte comme mq_send(), excepté que si la file  est
       pleine  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 h00  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  si  le  délai  d’attente  a  déjà
       expiré   pendant   la   durée   de   l’appel,  mq_timedsend()  s’achève
       immédiatement.

VALEUR RENVOYÉE

       En cas de succès, mq_send()  et  mq_timedsend()  renvoient  0.  En  cas
       d’erreur, elle renvoient -1 et définissent errno en conséquence.

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 grand 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_timedsend()  est un appel système et mq_send() 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_receive(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> ».