perkamon - en to fr translation catalogue (278 entries)

note: type: TH
en: 2010-08-29
fr: 29 août 2010

note: type: TH
en: Linux Programmer's Manual
fr: Manuel du programmeur Linux

note: type: SH
en: NAME
fr: NOM

note: type: Plain text
en: mq_close - close a message queue descriptor
fr: mq_close - Fermer un descripteur de file de messages

note: type: Plain text
en: Link with I<-lrt>.
fr: Effectuez l'édition des liens avec l'option I<-lrt>.

note: type: Plain text
en: B<mq_close>()  closes the message queue descriptor I<mqdes>.
fr: B<mq_close>() ferme le descripteur de file de messages I<mqdes>.

note: type: Plain text
en: If the calling process has attached a notification request to this message queue via I<mqdes>, then this request is removed, and another process can now attach a notification request.
fr: Si le processus appelant a attaché une requête de notification à cette file de messages avec I<mqdes>, alors la requête est supprimée et d'autres processus peuvent ensuite attacher un requête de notification.

note: type: SH
en: RETURN VALUE
fr: VALEUR RENVOYÉE

note: type: Plain text
en: On success B<mq_close>()  returns 0; on error, -1 is returned, with I<errno> set to indicate the error.
fr: Si elle réussit, B<mq_close>() renvoie 0. En cas d'erreur, elle renvoie -1 et remplit I<errno> en conséquence.

note: type: SH
en: ERRORS
fr: ERREURS

note: type: Plain text
en: The descriptor specified in I<mqdes> is invalid.
fr: Le descripteur spécifié dans I<mqdes> n'est pas valable.

note: type: SH
en: CONFORMING TO
fr: CONFORMITÉ

note: type: Plain text
en: All open message queues are automatically closed on process termination, or upon B<execve>(2).
fr: Toutes les files de messages ouvertes sont automatiquement fermées à la fin des processus, ou lors de B<execve>(2).

note: type: SH
en: SEE ALSO
fr: VOIR AUSSI

note: type: Plain text
en: This page is part of release 3.65 of the Linux I<man-pages> project.  A description of the project, and information about reporting bugs, can be found at \%http://www.kernel.org/doc/man-pages/.
fr: Cette page fait partie de la publication 3.65 du projet I<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/.

note: type: Plain text
en: mq_getattr, mq_setattr - get/set message queue attributes
fr: mq_getattr, mq_setattr - Lire et écrire les attributs d'une file de messages

note: type: Plain text
en: B<mq_getattr>()  and B<mq_setattr>()  respectively retrieve and modify attributes of the message queue referred to by the descriptor I<mqdes>.
fr: Les fonctions B<mq_getattr>() et B<mq_setattr>() extraient et modifient les attributs de la file de messages référencée par le descripteur I<mqdes>.

note: type: Plain text
en: B<mq_getattr>()  returns an I<mq_attr> structure in the buffer pointed by I<attr>.  This structure is defined as:
fr: B<mq_getattr>() renvoie une structure I<mq_attr> dans le tampon pointé par I<attr>. Cette structure est définie comme suit\ :

note: type: Plain text
en: struct mq_attr {
        long mq_flags;       /* Flags: 0 or O_NONBLOCK */
        long mq_maxmsg;      /* Max. # of messages on queue */
        long mq_msgsize;     /* Max. message size (bytes) */
        long mq_curmsgs;     /* # of messages currently in queue */
    };
fr: struct mq_attr {
        long mq_flags;       /* Drapeaux : 0 or O_NONBLOCK */
        long mq_maxmsg;      /* Max. # de messages dans la file */
        long mq_msgsize;     /* Max de la taille du message (octets) */
        long mq_curmsgs;     /* # de messages actuellement dans la file */
    };

note: type: Plain text
en: The I<mq_flags> field contains flags associated with the open message queue description.  This field is initialized when the queue is created by B<mq_open>(3).  The only flag that can appear in this field is B<O_NONBLOCK>.
fr: Le champ I<mq_flags> contient des drapeaux associés à la description de la file de messages ouverte. Ce champ est initialisé lorsque la file est créée avec B<mq_open>(3). Le seul drapeau qui peut apparaître dans ce champ est B<O_NONBLOCK>.

note: type: Plain text
en: The I<mq_maxmsg> and I<mq_msgsize> fields are set when the message queue is created by B<mq_open>(3).  The I<mq_maxmsg> field is an upper limit on the number of messages that may be placed on the queue using B<mq_send>(3).  The I<mq_msgsize> field is an upper limit on the size of messages that may be placed on the queue.  Both of these fields must have a value greater than zero.  Two I</proc> files that place ceilings on the values for these fields are described in B<mq_open>(3).
fr: Les champs I<mq_maxmsg> et I<mq_msgsize> sont définis lorsque la file de messages est créée avec B<mq_open>(3). Le champ I<mq_maxmsg> est le nombre maximal de messages qui peuvent être placés dans la file avec B<mq_send>(3). Le champ I<mq_msgsize> est la taille maximale des messages qui peuvent être placés dans la file. Chacun de ces champs doit avoir une valeur supérieure à zéro. Deux fichiers de I</proc> qui plafonnent ces valeurs pour ces champs sont décrites dans B<mq_open>(3).

note: type: Plain text
en: The I<mq_curmsgs> field returns the number of messages currently held in the queue.
fr: Le champ I<mq_curmsgs> renvoie le nombre de messages actuellement dans la file.

note: type: Plain text
en: B<mq_setattr>()  sets message queue attributes using information supplied in the I<mq_attr> structure pointed to by I<newattr>.  The only attribute that can be modified is the setting of the B<O_NONBLOCK> flag in I<mq_flags>.  The other fields in I<newattr> are ignored.  If the I<oldattr> field is not NULL, then the buffer that it points to is used to return an I<mq_attr> structure that contains the same information that is returned by B<mq_getattr>().
fr: B<mq_setattr>() définit les attributs de la file de messages avec les informations fournies par la structure I<mq_attr> pointée par I<newattr>. Le seul attribut qui peut être modifié est le drapeau B<O_NONBLOCK> de I<mq_flags>. Les autres champs de I<newattr> sont ignorés. Si le champ I<oldattr> est non NULL, alors le tampon qu'il pointe est utilisé pour renvoyer une structure I<mq_attr> contenant les mêmes informations que la fonction B<mq_getattr>() renverrait.

note: type: Plain text
en: On success B<mq_getattr>()  and B<mq_setattr>()  return 0; on error, -1 is returned, with I<errno> set to indicate the error.
fr: En cas de succès, B<mq_getattr>() et B<mq_setattr>() renvoient 0. En cas d'erreur, elles renvoient -1 et définissent I<errno> en conséquence.

note: type: Plain text
en: I<newattr-E<gt>mq_flags> contained set bits other than B<O_NONBLOCK>.
fr: I<newattr-E<gt>mq_flags> contient des bits définis autres que B<O_NONBLOCK>.

note: type: Plain text
en: On Linux, B<mq_getattr>()  and B<mq_setattr>()  are library functions layered on top of the B<mq_getsetattr>(2)  system call.
fr: Sous Linux, B<mq_getattr>() et B<mq_setattr>()  sont des fonctions de bibliothèque au dessus de l'appel système B<mq_getsetattr>(2).

note: type: TH
en: 2012-07-13
fr: 13 juillet 2012

note: type: Plain text
en: mq_getsetattr - get/set message queue attributes
fr: mq_getsetattr - Lire et écrire les attributs de files de messages

note: type: Plain text
en: I<Note>: There is no glibc wrapper for this system call; see NOTES.
fr: I<Remarque> : il n'existe pas de fonction glibc autour de cet appel système ; consultez B<NOTES>.

note: type: Plain text
en: Do not use this system call.
fr: N'utilisez pas cet appel système.

note: type: Plain text
en: This is the low-level system call used to implement B<mq_getattr>(3)  and B<mq_setattr>(3).  For an explanation of how this system call operates, see the description of B<mq_setattr>(3).
fr: C'est un appel système bas niveau utilisé pour implémenter B<mq_getattr>(3) et B<mq_setattr>(3). Pour une explication sur la façon dont cet appel système fonctionne, consultez la description de B<mq_setattr>(3).

note: type: Plain text
en: This interface is nonstandard; avoid its use.
fr: Cette interface n'est pas standard, évitez de l'utiliser.

note: type: Plain text
en: Glibc does not provide a wrapper for this system call; call it using B<syscall>(2).  (Actually, never call it unless you are writing a C library!)
fr: La glibc ne fournit pas de fonction autour de cet appel système\ ; vous devez utiliser B<syscall>(2) pour l'appeler. (En fait, ne l'appelez jamais si vous n'écrivez pas une bibliothèque C\ !)

note: type: TH
en: 2014-04-06
fr: 6 avril 2014

note: type: Plain text
en: mq_notify - register for notification when a message is available
fr: mq_notify - S'enregistrer pour la réception d'une notification de l'arrivée d'un nouveau message

note: type: Plain text
en: B<mq_notify>()  allows the calling process to register or unregister for delivery of an asynchronous notification when a new message arrives on the empty message queue referred to by the descriptor I<mqdes>.
fr: B<mq_notify>() permet à un processus appelant de s'enregistrer ou de ne plus s'enregistrer pour délivrer une notification asynchrone lorsqu'un message entre dans une file de messages vide référencée par le descripteur I<mqdes>.

note: type: Plain text
en: The I<sevp> argument is a pointer to a I<sigevent> structure.  For the definition and general details of this structure, see B<sigevent>(7).
fr: L'argument I<sevp> est un pointeur vers une structure I<sigevent>. Pour plus d'informations sur cette structure, consultez B<sigevent>(7).

note: type: Plain text
en: If I<sevp> is a non-null pointer, then B<mq_notify>()  registers the calling process to receive message notification.  The I<sigev_notify> field of the I<sigevent> structure to which I<sevp> points specifies how notification is to be performed.  This field has one of the following values:
fr: Si I<sevp> est un pointeur non NULL, alors B<mq_notify>() enregistre le processus appelant afin de recevoir les notifications. Le champ I<sigev_notify> de I<sigevent> qui pointe vers I<sevp> spécifie comment la notification est réalisée. Ce champ possède l'une des valeurs suivantes\ :

note: When is SIGEV_NONE useful? type: Plain text
en: A "null" notification: the calling process is registered as the target for notification, but when a message arrives, no notification is sent.
fr: Une notification «\ null\ »\ : le processus appelant est enregistré comme destinataire des notifications, mais aucune notification n'est envoyée lorsqu'un message arrive.

note: I don't know of other implementations that set si_pid and si_uid -- MTK type: Plain text
en: Notify the process by sending the signal specified in I<sigev_signo>.  See B<sigevent>(7)  for general details.  The I<si_code> field of the I<siginfo_t> structure will be set to B<SI_MESGQ>.  In addition, I<si_pid> will be set to the PID of the process that sent the message, and I<si_uid> will be set to the real user ID of the sending process.
fr: Notifier le processus en envoyant le signal spécifié dans I<sigev_signo>. Consultez B<sigevent>(7) pour plus de détails. Le champ I<si_code> de la structure I<siginfo_t> sera défini à B<SI_MESGQ>. De plus, I<si_pid> sera défini au PID du processus qui envoie le message, et I<si_uid> sera défini à l'ID utilisateur du processus émetteur.

note: type: Plain text
en: Upon message delivery, invoke I<sigev_notify_function> as if it were the start function of a new thread.  See B<sigevent>(7)  for details.
fr: Jusqu'à la livraison du message, invoquer I<sigev_notify_function> comme si c'était la fonction de création d'un nouveau processus léger. Consultez B<sigevent>(7) pour plus détails.

note: type: Plain text
en: Only one process can be registered to receive notification from a message queue.
fr: Seul un processus peut être enregistré pour recevoir les notifications d'une file de messages.

note: type: Plain text
en: If I<sevp> is NULL, and the calling process is currently registered to receive notifications for this message queue, then the registration is removed; another process can then register to receive a message notification for this queue.
fr: Si I<sevp> est NULL, et si le processus appelant est actuellement enregistré pour recevoir des notifications de cette file de messages, alors l'enregistrement est supprimé\ ; un autre processus peut s'enregistrer pour recevoir les notifications de cette file.

note: type: Plain text
en: Message notification occurs only when a new message arrives and the queue was previously empty.  If the queue was not empty at the time B<mq_notify>()  was called, then a notification will occur only after the queue is emptied and a new message arrives.
fr: Une notification de message n'est créée que lorsqu'un nouveau message arrive et que la file est vide. Si la file n'est pas vide à ce moment, B<mq_notify>() est appelée, alors une notification sera créée après que la file est vidée et qu'un nouveau message arrive.

note: type: Plain text
en: If another process or thread is waiting to read a message from an empty queue using B<mq_receive>(3), then any message notification registration is ignored: the message is delivered to the process or thread calling B<mq_receive>(3), and the message notification registration remains in effect.
fr: Si un autre processus ou thread attend pour lire un message d'une file vide avec B<mq_receive>(3), alors tout enregistrement de notification de message est ignoré\ : le message est délivré au processus ou au thread appelant avec B<mq_receive>(3) et l'enregistrement de notification de message garde son effet.

note: type: Plain text
en: Notification occurs once: after a notification is delivered, the notification registration is removed, and another process can register for message notification.  If the notified process wishes to receive the next notification, it can use B<mq_notify>()  to request a further notification.  This should be done before emptying all unread messages from the queue.  (Placing the queue in nonblocking mode is useful for emptying the queue of messages without blocking once it is empty.)
fr: Une notification apparaît une seule fois\ : après qu'une notification est délivrée, l'enregistrement de notification est supprimé et d'autre processus peuvent s'enregistrer. Si le processus notifié souhaite recevoir la prochaine notification, il peut utiliser B<mq_notify>() pour demander une autre notification. Cela doit être fait avant de vider tous les messages non lus de la file (Placer la file en mode non bloquant est utile pour la vider sans la bloquer une seule fois si elle est vide).

note: type: Plain text
en: On success B<mq_notify>()  returns 0; on error, -1 is returned, with I<errno> set to indicate the error.
fr: Si elle réussit, la fonction B<mq_notify>() renvoie 0. En cas d'erreur, elle renvoie -1 et définit I<errno> en conséquence.

note: type: Plain text
en: Another process has already registered to receive notification for this message queue.
fr: Un autre processus est déjà enregistré pour recevoir les notifications de cette file de messages.

note: type: Plain text
en: I<sevp-E<gt>sigev_notify> is not one of the permitted values; or I<sevp-E<gt>sigev_notify> is B<SIGEV_SIGNAL> and I<sevp-E<gt>sigev_signo> is not a valid signal number.
fr: I<sevp-E<gt>sigev_notify> n'est pas l'une des valeurs permises\ ; ou I<sevp-E<gt>sigev_notify> vaut B<SIGEV_SIGNAL> et I<sevp-E<gt>sigev_signo> n'est pas un numéro de signal valable.

note: type: Plain text
en: Insufficient memory.
fr: Mémoire insuffisante.

note: Linux does not do this type: Plain text
en: POSIX.1-2008 says that an implementation I<may> generate an B<EINVAL> error if I<sevp> is NULL, and the caller is not currently registered to receive notifications for the queue I<mqdes>.
fr: POSIX.1-2008 dit qu'une implémentation I<pourrait> générer une erreur B<EINVAL> si I<sevp> est NULL et si l'appelant n'a pas souscrit aux notifications de la file I<mqdes>.

note: type: SH
en: EXAMPLE
fr: EXEMPLE

note: type: Plain text
en: The following program registers a notification request for the message queue named in its command-line argument.  Notification is performed by creating a thread.  The thread executes a function which reads one message from the queue and then terminates the process.
fr: Le programme suivant enregistre une requête de notification pour une file de messages nommée avec l'un des arguments de la ligne de commande. La notification est réalisée en créant un thread. Le thread exécute une fonction qui lit un message provenant de la file puis le processus se termine.

note: type: SS
en: Program source
fr: Source du programme

note: type: Plain text
en:     printf("Read %zd bytes from MQ\en", nr);
        free(buf);
        exit(EXIT_SUCCESS);         /* Terminate the process */
    }
fr:     printf("Lire %zd octets depuis MQ\en", nr);
        free(buf);
        exit(EXIT_SUCCESS);         /* Terminer le processus */
    }

note: type: Plain text
en:     pause();    /* Process will be terminated by thread function */
    }
fr:     pause();    /* Le processus sera terminé par la fonction du proc. */
    }

note: type: TH
en: 2009-02-20
fr: 20 février 2009

note: type: Plain text
en: mq_open - open a message queue
fr: mq_open - Ouvrir une file de messages

note: type: Plain text
en: B<#include E<lt>fcntl.hE<gt>>           /* For O_* constants */
    B<#include E<lt>sys/stat.hE<gt>>        /* For mode constants */
    B<#include E<lt>mqueue.hE<gt>>
fr: B<#include E<lt>fcntl.hE<gt>>           /* Pour les constantes O_* */
    B<#include E<lt>sys/stat.hE<gt>>        /* Pour les constantes des modes */
    B<#include E<lt>mqueue.hE<gt>>

note: type: Plain text
en: B<mq_open>()  creates a new POSIX message queue or opens an existing queue.  The queue is identified by I<name>.  For details of the construction of I<name>, see B<mq_overview>(7).
fr: La fonction B<mq_open>() crée une nouvelle file de messages POSIX, ou ouvre une file de messages existante. La file est identifiée par I<name>. Pour plus de détails sur la construction de I<name>, consultez B<mq_overview>(7).

note: type: Plain text
en: The I<oflag> argument specifies flags that control the operation of the call.  (Definitions of the flags values can be obtained by including I<E<lt>fcntl.hE<gt>>.)  Exactly one of the following must be specified in I<oflag>:
fr: L'argument I<oflag> spécifie les drapeaux qui contrôlent l'opération d'appel (les définitions des valeurs des attributs peuvent être obtenues en incluant I<E<lt>fcntl.hE<gt>>). Un unique drapeau parmi les suivants doit être spécifié dans I<oflag>\ :

note: type: Plain text
en: Open the queue to receive messages only.
fr: Ouvrir une file pour seulement recevoir des messages.

note: type: Plain text
en: Open the queue to send messages only.
fr: Ouvrir une file pour seulement envoyer des messages.

note: type: Plain text
en: Open the queue to both send and receive messages.
fr: Ouvrir une file pour soit envoyer ou soit recevoir des messages.

note: type: Plain text
en: Zero or more of the following flags can additionally be I<OR>ed in I<oflag>:
fr: Zéro ou plusieurs des drapeaux suivants peuvent être ajoutés avec un I<ou binaire> dans I<oflag>\ :

note: type: Plain text
en: Open the queue in nonblocking mode.  In circumstances where B<mq_receive>(3)  and B<mq_send>(3)  would normally block, these functions instead fail with the error B<EAGAIN>.
fr: Ouvrir une file en mode non bloquant. Dans de telles circonstances où B<mq_receive>(3) et B<mq_send>(3) devraient être normalement bloquantes, ces fonctions échoueront avec le code d'erreur B<EAGAIN>.

note: In reality the filesystem IDs are used on Linux. type: Plain text
en: Create the message queue if it does not exist.  The owner (user ID) of the message queue is set to the effective user ID of the calling process.  The group ownership (group ID) is set to the effective group ID of the calling process.
fr: Créer la file de messages si elle n'existe pas. Le propriétaire de la file de messages est défini à l'UID du processus appelant, il en est de même pour le GID.

note: type: Plain text
en: If B<O_CREAT> was specified in I<oflag>, and a queue with the given I<name> already exists, then fail with the error B<EEXIST>.
fr: Si B<O_CREAT> est spécifié dans I<oflag>, et si une file de nom I<name> existe déjà, alors elle échouera et renverra le code d'erreur B<EEXIST>.

note: type: Plain text
en: If B<O_CREAT> is specified in I<oflag>, then two additional arguments must be supplied.  The I<mode> argument specifies the permissions to be placed on the new queue, as for B<open>(2).  (Symbolic definitions for the permissions bits can be obtained by including I<E<lt>sys/stat.hE<gt>>.)  The permissions settings are masked against the process umask.  The I<attr> argument specifies attributes for the queue.  See B<mq_getattr>(3)  for details.  If I<attr> is NULL, then the queue is created with implementation-defined default attributes.
fr: Si B<O_CREAT> est spécifié dans I<oflag>, alors deux arguments additionnels doivent être spécifiés. L'argument I<mode> spécifie les permissions de la nouvelle file, comme pour B<open>(2) (les définitions symboliques des bits de permissions peuvent être obtenues en incluant I<E<lt>sys/stat.hE<gt>>). La définition des permissions est masquée avec l'«\ umask\ » du processus. L'argument I<attr> spécifie les attributs de la file. Consultez B<mq_getattr>(3) pour plus de détails. Si I<attr> est NULL, alors la file est créée avec les attributs par défaut de l'implémentation.

note: type: Plain text
en: On success, B<mq_open>()  returns a message queue descriptor for use by other message queue functions.  On error, B<mq_open>()  returns I<(mqd_t)\ -1>, with I<errno> set to indicate the error.
fr: En cas de succès, B<mq_open>() renvoie un descripteur de file de messages à utiliser avec les autres fonctions des files de messages. En cas d'erreur, B<mq_open>() renvoie I<(mqd_t)\ -1>, avec I<errno> définie.

note: type: Plain text
en: The queue exists, but the caller does not have permission to open it in the specified mode.
fr: La file existe mais l'appelant n'a pas les permissions pour l'ouvrir dans le mode spécifié.

note: Note that this isn't consistent with the same case for sem_open() type: Plain text
en: I<name> contained more than one slash.
fr: I<name> contient plus d'un caratère «\ /\ ».

note: type: Plain text
en: Both B<O_CREAT> and B<O_EXCL> were specified in I<oflag>, but a queue with this I<name> already exists.
fr: B<O_CREAT> et B<O_EXCL> sont spécifiés dans I<oflag>, mais une file avec le même nom existe déjà.

note: type: Plain text
en: B<O_CREAT> was specified in I<oflag>, and I<attr> was not NULL, but I<attr-E<gt>mq_maxmsg> or I<attr-E<gt>mq_msqsize> was invalid.  Both of these fields must be greater than zero.  In a process that is unprivileged (does not have the B<CAP_SYS_RESOURCE> capability), I<attr-E<gt>mq_maxmsg> must be less than or equal to the I<msg_max> limit, and I<attr-E<gt>mq_msgsize> must be less than or equal to the I<msgsize_max> limit.  In addition, even in a privileged process, I<attr-E<gt>mq_maxmsg> cannot exceed the B<HARD_MAX> limit.  (See B<mq_overview>(7)  for details of these limits.)
fr: B<O_CREAT> était spécifié dans I<oflag>, et I<attr> était non NULL, mais I<attr-E<gt>mq_maxmsg> ou I<attr-E<gt>mq_msqsize> n'était pas valable. Ces deux champs doivent être supérieurs à zéro. Avec un processus non privilégié (qui n'a pas la capacité B<CAP_SYS_RESOURCE>), I<attr-E<gt>mq_maxmsg> doit être inférieur ou égal à la limite I<msg_max>, et I<attr-E<gt>mq_msgsize> doit être inférieur ou égal à la limite I<msgsize_max>. En plus, même avec un processus privilégié, I<attr-E<gt>mq_maxmsg> ne peut pas être plus grand que la limite B<HARD_MAX>. Consultez B<mq_overview>(7) pour les détails sur ces limites.

note: type: Plain text
en: The process already has the maximum number of files and message queues open.
fr: Le processus a déjà le nombre maximal autorisé de fichiers et de files de messages ouverts.

note: type: Plain text
en: I<name> was too long.
fr: I<name> est trop long.

note: type: Plain text
en: The system limit on the total number of open files and message queues has been reached.
fr: La limite système du nombre de fichiers ouverts et de files de messages a été atteinte.

note: type: Plain text
en: The B<O_CREAT> flag was not specified in I<oflag>, and no queue with this I<name> exists.
fr: Le drapeau B<O_CREAT> n'a pas été spécifié dans I<oflag>, et aucune file avec le nom I<name> n'existe.

note: Note that this isn't consistent with the same case for sem_open() type: Plain text
en: I<name> was just "/" followed by no other characters.
fr: I<name> est juste «\ /\ » suivi d'aucun autre caractère.

note: type: Plain text
en: Insufficient space for the creation of a new message queue.  This probably occurred because the I<queues_max> limit was encountered; see B<mq_overview>(7).
fr: Pas assez d'espace pour la création de la nouvelle file de messages. Ceci s'est probablement produit car la limite I<queues_max> a été atteinte\ ; consultez B<mq_overview>(7).

note: type: SH
en: BUGS
fr: BOGUES

note: type: Plain text
en: In kernels before 2.6.14, the process umask was not applied to the permissions specified in I<mode>.
fr: Avec les noyaux antérieurs à la version 2.6.14, l'«\ umask\ » du processus n'est pas appliqué aux permissions spécifiées par I<mode>.

note: type: TH
en: 2009-09-27
fr: 27 septembre 2009

note: type: Plain text
en: mq_overview - overview of POSIX message queues
fr: mq_overview - Panorama des files de messages POSIX

note: type: Plain text
en: POSIX message queues allow processes to exchange data in the form of messages.  This API is distinct from that provided by System V message queues (B<msgget>(2), B<msgsnd>(2), B<msgrcv>(2), etc.), but provides similar functionality.
fr: Les files de messages POSIX permettent aux processus d'échanger des données sous forme de messages. Cette API est distincte de celle fournie par les files de messages System V (B<msgget>(2), B<msgsnd>(2), B<msgrcv>(2), etc.), mais propose des fonctionnalités similaires.

note: type: Plain text
en: Message queues are created and opened using B<mq_open>(3); this function returns a I<message queue descriptor> (I<mqd_t>), which is used to refer to the open message queue in later calls.  Each message queue is identified by a name of the form I</somename>; that is, a null-terminated string of up to B<NAME_MAX> (i.e., 255) characters consisting of an initial slash, followed by one or more characters, none of which are slashes.  Two processes can operate on the same queue by passing the same name to B<mq_open>(3).
fr: Les files de messages sont créées et ouvertes en utilisant B<mq_open>(3). Cette fonction retourne un I<descripteur de file de messages> (I<mqd_t>), utilisé pour se référer à la file de messages ouverte dans les prochains appels. Chaque file de messages est distinguée par son nom sous la forme I</un_nom> ; c'est-à-dire un chaîne terminée par un caractère nul pouvant avoir jusqu'à B<NAME_MAX> (255) caractères, commençant par une barre oblique (« / ») suivie d'un caractère ou plus, aucun de ces derniers n'étant une barre oblique. Deux processus peuvent opérer sur la même file en fournissant le même nom à B<mq_open>(3).

note: type: Plain text
en: Messages are transferred to and from a queue using B<mq_send>(3)  and B<mq_receive>(3).  When a process has finished using the queue, it closes it using B<mq_close>(3), and when the queue is no longer required, it can be deleted using B<mq_unlink>(3).  Queue attributes can be retrieved and (in some cases) modified using B<mq_getattr>(3)  and B<mq_setattr>(3).  A process can request asynchronous notification of the arrival of a message on a previously empty queue using B<mq_notify>(3).
fr: Les messages sont transférés à une file et récupérés depuis une file en utilisant B<mq_send>(3) et B<mq_receive>(3). Lorsqu'un processus a fini d'utiliser la file, il la ferme en utilisant B<mq_close>(3), et lorsque cette file n'est plus nécessaire, elle peut être supprimée avec B<mq_unlink>(3). Les attributs de la file peuvent être obtenus et (dans certains cas) modifiés en utilisant B<mq_getattr>(3) et B<mq_setattr>(3). Un processus peut demander un avertissement asynchrone de l'arrivée d'un message sur une file auparavant vide en utilisant B<mq_notify>(3).

note: type: Plain text
en: A message queue descriptor is a reference to an I<open message queue description> (cf.  B<open>(2)).  After a B<fork>(2), a child inherits copies of its parent's message queue descriptors, and these descriptors refer to the same open message queue descriptions as the corresponding descriptors in the parent.  Corresponding descriptors in the two processes share the flags (I<mq_flags>)  that are associated with the open message queue description.
fr: Un descripteur de file de messages est une référence à une I<description d'une file de messages ouverte> (consultez B<open>(2)). Après un appel à B<fork>(2), un processus fils hérite des copies des descripteurs de file de messages de son parent, et ces descripteurs réfèrent aux mêmes descriptions de files de messages ouvertes que les descripteurs correspondants du parent. Les descripteurs correspondants de deux processus partagent l'attribut (I<mq_flags>) qui est associé à la description de la file de messages ouverte.

note: type: Plain text
en: Each message has an associated I<priority>, and messages are always delivered to the receiving process highest priority first.  Message priorities range from 0 (low) to I<sysconf(_SC_MQ_PRIO_MAX)\ -\ 1> (high).  On Linux, I<sysconf(_SC_MQ_PRIO_MAX)> returns 32768, but POSIX.1-2001 requires only that an implementation support at least priorities in the range 0 to 31; some implementations provide only this range.
fr: Chaque message contient une I<priorité> associée, et les messages sont toujours délivrés au processus de réception par ordre de priorité. L'intervalle de priorité des messages va de 0 (faible) à I<sysconf(_SC_MQ_PRIO_MAX)\ -\ 1> (haute). Sur Linux, I<sysconf(_SC_MQ_PRIO_MAX)> renvoie 32768, mais POSIX.1-2001 n'exige des implémentations que la prise en charge des priorités allant de 0 à 31. Certaines implémentations ne proposent que cet intervalle.

note: type: Plain text
en: The remainder of this section describes some specific details of the Linux implementation of POSIX message queues.
fr: Le reste de cette section décrit certains détails spécifiques à l'implémentation Linux des queues de messages POSIX.

note: type: SS
en: Library interfaces and system calls
fr: Interfaces de bibliothèque et appels système

note: type: Plain text
en: In most cases the B<mq_*>()  library interfaces listed above are implemented on top of underlying system calls of the same name.  Deviations from this scheme are indicated in the following table:
fr: Dans la plupart des cas, les interfaces de bibliothèque B<mq_*>() sont implémentées autour d'appels système du même nom. Les exceptions à cette règle sont indiquées dans le tableau ci\(hydessous\ :

note: type: tbl table
en: Library interface	System call
fr: Fonction de bibliothèque	Appel système

note: type: Plain text
en: POSIX message queues have been supported on Linux since kernel 2.6.6.  Glibc support has been provided since version 2.3.4.
fr: Les files de messages POSIX ne sont gérées par Linux que depuis le noyau 2.6.6. La gestion n'a été ajoutée à glibc que depuis la version 2.3.4.

note: type: SS
en: Kernel configuration
fr: Configuration du noyau

note: type: Plain text
en: Support for POSIX message queues is configurable via the B<CONFIG_POSIX_MQUEUE> kernel configuration option.  This option is enabled by default.
fr: La gestion des files de messages POSIX est configurable via l'option de configuration du noyau B<CONFIG_POSIX_MQUEUE>. Cette option est activée par défaut.

note: type: SS
en: Persistence
fr: Persistance

note: type: Plain text
en: POSIX message queues have kernel persistence: if not removed by B<mq_unlink>(3), a message queue will exist until the system is shut down.
fr: Les files de messages POSIX persistent dans le noyau\ : si une file de messages n'est pas supprimée avec B<mq_unlink>(3), elle existera jusqu'à l'extinction du système.

note: type: SS
en: Linking
fr: Édition des liens

note: type: Plain text
en: Programs using the POSIX message queue API must be compiled with I<cc -lrt> to link against the real-time library, I<librt>.
fr: Les programmes utilisant l'API des files de messages POSIX doivent être compilés avec I<cc -lrt> pour être liés à la bibliothèque temps-réel I<librt>.

note: type: SS
en: /proc interfaces
fr: Interfaces /proc

note: type: Plain text
en: The following interfaces can be used to limit the amount of kernel memory consumed by POSIX message queues:
fr: Les interfaces suivantes peuvent être utilisées pour limiter la quantité de mémoire du noyau utilisée par les files de messages POSIX\ :

note: type: Plain text
en: This file can be used to view and change the ceiling value for the maximum number of messages in a queue.  This value acts as a ceiling on the I<attr-E<gt>mq_maxmsg> argument given to B<mq_open>(3).  The default value for I<msg_max> is 10.  The minimum value is 1 (10 in kernels before 2.6.28).  The upper limit is B<HARD_MAX>: I<(131072\ /\ sizeof(void\ *))> (32768 on Linux/86).  This limit is ignored for privileged processes (B<CAP_SYS_RESOURCE>), but the B<HARD_MAX> ceiling is nevertheless imposed.
fr: Ce fichier peut être utilisé pour visualiser et changer la valeur limite pour le nombre maximal de messages dans une file. Cette valeur agit comme une borne pour le paramètre I<attr-E<gt>mq_maxmsg> indiqué à B<mq_open>(3). La valeur par défaut de I<msg_max> vaut 10. La valeur minimale est de 1 (10 pour les noyaux antérieurs à 2.6.28). La valeur maximale vaut B<HARD_MAX>\ : I<(131072\ /\ sizeof(void\ *))> (32768 sur Linux/86). Cette limite est ignorée pour les processus privilégiés (B<CAP_SYS_RESOURCE>), mais la limite B<HARD_MAX> reste néanmoins imposée.

note: type: Plain text
en: This file can be used to view and change the ceiling on the maximum message size.  This value acts as a ceiling on the I<attr-E<gt>mq_msgsize> argument given to B<mq_open>(3).  The default value for I<msgsize_max> is 8192 bytes.  The minimum value is 128 (8192 in kernels before 2.6.28).  The upper limit for I<msgsize_max> is 1,048,576 (in kernels before 2.6.28, the upper limit was B<INT_MAX>; that is, 2,147,483,647 on Linux/86).  This limit is ignored for privileged processes (B<CAP_SYS_RESOURCE>).
fr: Ce fichier peut être utilisé pour visualiser et modifier la limite de la taille maximale des messages. Cette valeur agit comme une borne pour le paramètre I<attr-E<gt>mq_msgsize> indiqué à B<mq_open>(3). La valeur par défaut de I<msgsize_max> est de 8192 octets. La valeur minimale est de 128 (8192 pour les noyaux antérieurs à 2.6.28). La valeur maximale de I<msgsize_max> est de 1 048 576 octets (dans les noyaux antérieurs à 2.6.28, la valeur maximale était de B<INT_MAX>, c'est-à-dire 2 147 483 647 sur Linux/86). Cette limite est ignorée pour les processus privilégiés (B<CAP_SYS_RESOURCE>).

note: type: Plain text
en: This file can be used to view and change the system-wide limit on the number of message queues that can be created.  Only privileged processes (B<CAP_SYS_RESOURCE>)  can create new message queues once this limit has been reached.  The default value for I<queues_max> is 256; it can be changed to any value in the range 0 to INT_MAX.
fr: Ce fichier peut être utilisé pour visualiser et modifier la limite au niveau du système du nombre de files de messages qui peuvent être créées. Seuls les processus privilégiés (B<CAP_SYS_RESOURCE>) peuvent créer de nouvelles files de messages une fois que la limite a été atteinte. La valeur par défaut de I<queues_max> vaut 256, elle peut être remplacée par n'importe quelle valeur entre 0 et INT_MAX.

note: type: SS
en: Resource limit
fr: Limitation des ressources

note: type: Plain text
en: The B<RLIMIT_MSGQUEUE> resource limit, which places a limit on the amount of space that can be consumed by all of the message queues belonging to a process's real user ID, is described in B<getrlimit>(2).
fr: La limitation des ressources B<RLIMIT_MSGQUEUE>, qui indique une limite sur la quantité d'espace qui peut être utilisée par toutes les files de messages appartenant à l'identifiant utilisateur réel du processus, est décrite dans B<getrlimit>(2).

note: type: SS
en: Mounting the message queue filesystem
fr: Monter le système de fichiers des files de messages

note: type: Plain text
en: On Linux, message queues are created in a virtual filesystem.  (Other implementations may also provide such a feature, but the details are likely to differ.)  This filesystem can be mounted (by the superuser) using the following commands:
fr: Sous Linux, les files de messages sont créées dans un système de fichiers virtuel. (D'autres implémentation peuvent également fournir une telle fonctionnalité, mais les détails sont probablement différents.) Ce système de fichiers peut être monté (par le superutilisateur) en utilisant les commandes suivantes\ :

note: type: Plain text
en: The sticky bit is automatically enabled on the mount directory.
fr: Le «\ sticky bit\ » est automatiquement activé sur le répertoire de montage.

note: type: Plain text
en: After the filesystem has been mounted, the message queues on the system can be viewed and manipulated using the commands usually used for files (e.g., B<ls>(1)  and B<rm>(1)).
fr: Une fois le système de fichiers monté, les files de messages sur le système peuvent être visualisées et manipulées avec les commandes utilisées habituellement pour les fichiers (par exemple, B<ls>(1) et B<rm>(1)).

note: type: Plain text
en: The contents of each file in the directory consist of a single line containing information about the queue:
fr: Le contenu de chaque fichier dans le répertoire est composé d'une seule ligne contenant les informations sur la file\ :

note: type: Plain text
en: These fields are as follows:
fr: Ces champs ont les caractéristiques suivantes\ :

note: type: Plain text
en: Number of bytes of data in all messages in the queue.
fr: Nombre d'octets de données dans tous les messages de la file.

note: type: Plain text
en: If this is nonzero, then the process with this PID has used B<mq_notify>(3)  to register for asynchronous message notification, and the remaining fields describe how notification occurs.
fr: Si différent de zéro, alors le processus avec cet identifiant a utilisé B<mq_notify>(3) pour s'enregistrer pour les avertissements asynchrones de messages, et les champs suivants décrivent comment ces avertissements se produisent.

note: type: Plain text
en: Notification method: 0 is B<SIGEV_SIGNAL>; 1 is B<SIGEV_NONE>; and 2 is B<SIGEV_THREAD>.
fr: Méthode d'avertissement\ : 0 pour B<SIGEV_SIGNAL>, 1 pour B<SIGEV_NONE> et 2 pour B<SIGEV_THREAD>.

note: type: Plain text
en: Signal number to be used for B<SIGEV_SIGNAL>.
fr: Numéro de signal à utiliser pour B<SIGEV_SIGNAL>.

note: type: SS
en: Polling message queue descriptors
fr: Consultation des descripteurs de files de messages

note: type: Plain text
en: On Linux, a message queue descriptor is actually a file descriptor, and can be monitored using B<select>(2), B<poll>(2), or B<epoll>(7).  This is not portable.
fr: Sous Linux, un descripteur de file de messages est en fait un descripteur de fichier, et peut être contrôlé avec B<select>(2), B<poll>(2) ou B<epoll>(7). Ceci n'est pas portable.

note: type: Plain text
en: System V message queues (B<msgget>(2), B<msgsnd>(2), B<msgrcv>(2), etc.) are an older API for exchanging messages between processes.  POSIX message queues provide a better designed interface than System V message queues; on the other hand POSIX message queues are less widely available (especially on older systems) than System V message queues.
fr: Les files de messages System V (B<msgget>(2), B<msgsnd>(2), B<msgrcv>(2), etc.) sont une ancienne API d'échange de messages entre les processus. Les files de messages POSIX fournissent une interface mieux conçue. Cependant, les files de messages POSIX sont moins disponibles (en particulier sur les anciens systèmes) que les files de messages System V.

note: type: Plain text
en: Linux does not currently (2.6.26) support the use of access control lists (ACLs) for POSIX message queues.
fr: Actuellement (2.6.26), Linux ne gère pas l'utilisation des listes de contrôle d'accès (ACL : Access Control List) des files de messages POSIX.

note: type: Plain text
en: An example of the use of various message queue functions is shown in B<mq_notify>(3).
fr: Un exemple d'utilisation des différentes fonctions des files de messages est disponible dans B<mq_notify>(3).

note: type: TH
en: 2014-01-18
fr: 18 janvier 2014

note: type: Plain text
en: mq_receive, mq_timedreceive - receive a message from a message queue
fr: mq_receive, mq_timedreceive - Recevoir un message d'une file de messages

note: type: Plain text
en: Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):
fr: Exigences de macros de test de fonctionnalités pour la glibc (consultez B<feature_test_macros>(7)) :

note: type: Plain text
en: B<mq_timedreceive>():
fr: B<mq_timedreceive>()\ :

note: type: Plain text
en: B<mq_receive>()  removes the oldest message with the highest priority from the message queue referred to by the descriptor I<mqdes>, and places it in the buffer pointed to by I<msg_ptr>.  The I<msg_len> argument specifies the size of the buffer pointed to by I<msg_ptr>; this must be greater than or equal to the I<mq_msgsize> attribute of the queue (see B<mq_getattr>(3)).  If I<msg_prio> is not NULL, then the buffer to which it points is used to return the priority associated with the received message.
fr: B<mq_receive>() supprime le plus vieux message avec la plus haute priorité de la file de messages référencée par I<mqdes>, et le place dans un tampon pointé par I<msg_ptr>. L'argument I<msg_len> indique la taille du tampon pointé par I<msg_ptr>\ ; celui-ci doit être plus large ou aussi grand que l'attribut I<mq_msgsize> de la file (consultez B<mq_getattr>(3)). Si I<msg_prio> est non NULL, alors le tampon vers lequel il pointe est utilisé pour renvoyer la priorité associée au message reçu.

note: type: Plain text
en: If the queue is empty, then, by default, B<mq_receive>()  blocks until a message becomes available, or the call is interrupted by a signal handler.  If the B<O_NONBLOCK> flag is enabled for the message queue description, then the call instead fails immediately with the error B<EAGAIN>.
fr: Si la file est vide, alors par défaut, B<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 B<O_NONBLOCK> est activé dans la description de file de messages, alors l'appel échouera immédiatement avec l'erreur B<EAGAIN>.

note: type: Plain text
en: B<mq_timedreceive>()  behaves just like B<mq_receive>(), except that if the queue is empty and the B<O_NONBLOCK> flag is not enabled for the message queue description, then I<abs_timeout> points to a structure which specifies a ceiling on the time for which the call will block.  This ceiling is an absolute timeout in seconds and nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC), and it is specified in the following structure:
fr: B<mq_timedreceive>() se comporte comme B<mq_receive>(), excepté que si la file est vide et si le drapeau B<O_NONBLOCK> n'est pas activé dans la description de la file de messages, alors I<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\ :

note: type: Plain text
en: struct timespec {
        time_t tv_sec;        /* seconds */
        long   tv_nsec;       /* nanoseconds */
    };
fr: struct timespec {
        time_t tv_sec;        /* secondes     */
        long   tv_nsec;       /* nanosecondes */
    };

note: type: Plain text
en: If no message is available, and the timeout has already expired by the time of the call, B<mq_timedreceive>()  returns immediately.
fr: Si aucun message n'est disponible et si le délai d'attente a déjà expiré pendant la durée de l'appel, B<mq_timedreceive>() s'achève immédiatement.

note: type: Plain text
en: On success, B<mq_receive>()  and B<mq_timedreceive>()  return the number of bytes in the received message; on error, -1 is returned, with I<errno> set to indicate the error.
fr: En cas de succès, B<mq_receive>() et B<mq_timedreceive>() renvoient le nombre d'octets du message reçu. En cas d'erreur, -1 est renvoyé et I<errno> indique l'erreur.

note: type: Plain text
en: The queue was empty, and the B<O_NONBLOCK> flag was set for the message queue description referred to by I<mqdes>.
fr: La file est vide et le drapeau B<O_NONBLOCK> était défini pour la file de messages référencée par le descripteur I<mqdes>.

note: type: Plain text
en: The descriptor specified in I<mqdes> was invalid.
fr: Le descripteur spécifié dans I<mqdes> n'est pas valable.

note: type: Plain text
en: The call was interrupted by a signal handler; see B<signal>(7).
fr: L'appel a été interrompu par un gestionnaire de signal ; consultez B<signal>(7).

note: type: Plain text
en: The call would have blocked, and I<abs_timeout> was invalid, either because I<tv_sec> was less than zero, or because I<tv_nsec> was less than zero or greater than 1000 million.
fr: L'appel devrait être bloqué, et I<abs_timeout> n'est pas valable, soit car I<tv_sec> est inférieur à zéro, ou soit car I<tv_nsec> est inférieur à zéro ou plus grand que 1000\ millions.

note: type: Plain text
en: I<msg_len> was less than the I<mq_msgsize> attribute of the message queue.
fr: I<msg_len> était plus petit que l'attribut I<mq_msgsize> de la file de messages.

note: type: Plain text
en: The call timed out before a message could be transferred.
fr: Le délai d'attente de l'appel a expiré avant que le message ait été transféré.

note: type: Plain text
en: On Linux, B<mq_timedreceive>()  is a system call, and B<mq_receive>()  is a library function layered on top of that system call.
fr: Sous Linux, B<mq_timedreceive>() est un appel système et B<mq_receive>() est une fonction de bibliothèque au dessus de la couche des appels systèmes.

note: type: Plain text
en: mq_send, mq_timedsend - send a message to a message queue
fr: mq_send, mq_timedsend - Envoyer un message à une file de messages

note: type: Plain text
en: B<mq_timedsend>():
fr: B<mq_timedsend>() :

note: type: Plain text
en: B<mq_send>()  adds the message pointed to by I<msg_ptr> to the message queue referred to by the descriptor I<mqdes>.  The I<msg_len> argument specifies the length of the message pointed to by I<msg_ptr>; this length must be less than or equal to the queue's I<mq_msgsize> attribute.  Zero-length messages are allowed.
fr: B<mq_send>() ajoute le message pointé par I<msg_ptr> à la file de messages référencée par le descripteur I<mqdes>. L'argument I<msg_len> spécifie la longueur du message pointé par I<msg_ptr>. Cette longueur doit être inférieure ou égale à l'attribut I<mq_msgsize> de la file. Les messages de longueur nulle sont permis.

note: type: Plain text
en: The I<msg_prio> argument is a nonnegative integer that specifies the priority of this message.  Messages are placed on the queue in decreasing order of priority, with newer messages of the same priority being placed after older messages with the same priority.
fr: L'argument I<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é.

note: type: Plain text
en: If the message queue is already full (i.e., the number of messages on the queue equals the queue's I<mq_maxmsg> attribute), then, by default, B<mq_send>()  blocks until sufficient space becomes available to allow the message to be queued, or until the call is interrupted by a signal handler.  If the B<O_NONBLOCK> flag is enabled for the message queue description, then the call instead fails immediately with the error B<EAGAIN>.
fr: Si la file de messages est déjà pleine (c'est-à-dire que le nombre de messages de la file est égal à l'attribut I<mq_maxmsg> de la file), alors par défaut, B<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 B<O_NONBLOCK> est activé pour la description de la file de messages, alors l'appel échoue immédiatement avec l'erreur B<EAGAIN>.

note: type: Plain text
en: B<mq_timedsend>()  behaves just like B<mq_send>(), except that if the queue is full and the B<O_NONBLOCK> flag is not enabled for the message queue description, then I<abs_timeout> points to a structure which specifies a ceiling on the time for which the call will block.  This ceiling is an absolute timeout in seconds and nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC), and it is specified in the following structure:
fr: B<mq_timedsend>() se comporte comme B<mq_send>(), excepté que si la file est pleine et si le drapeau B<O_NONBLOCK> n'est pas activé dans la description de la file de messages, alors I<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\ :

note: type: Plain text
en: If the message queue is full, and the timeout has already expired by the time of the call, B<mq_timedsend>()  returns immediately.
fr: 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, B<mq_timedsend>() s'achève immédiatement.

note: type: Plain text
en: On success, B<mq_send>()  and B<mq_timedsend>()  return zero; on error, -1 is returned, with I<errno> set to indicate the error.
fr: En cas de succès, B<mq_send>() et B<mq_timedsend>() renvoient 0. En cas d'erreur, elle renvoient -1 et définissent I<errno> en conséquence.

note: type: Plain text
en: The queue was full, and the B<O_NONBLOCK> flag was set for the message queue description referred to by I<mqdes>.
fr: La file est pleine et le drapeau B<O_NONBLOCK> était défini pour la file de messages référencée par le descripteur I<mqdes>.

note: type: Plain text
en: I<msg_len> was greater than the I<mq_msgsize> attribute of the message queue.
fr: I<msg_len> était plus grand que l'attribut I<mq_msgsize> de la file de messages.

note: type: Plain text
en: On Linux, B<mq_timedsend>()  is a system call, and B<mq_send>()  is a library function layered on top of that system call.
fr: Sous Linux, B<mq_timedsend>() est un appel système et B<mq_send>() est une fonction de bibliothèque au dessus de la couche des appels systèmes.

note: type: Plain text
en: mq_unlink - remove a message queue
fr: mq_unlink - Supprimer une file de messages

note: type: Plain text
en: B<mq_unlink>()  removes the specified message queue I<name>.  The message queue name is removed immediately.  The queue itself is destroyed once any other processes that have the queue open close their descriptors referring to the queue.
fr: B<mq_unlink>() supprime la file de messages spécifiée dans I<name>. Le nom de la file de messages est immédiatement supprimé. La file elle-même est détruite dès que tous les processus auront fermé leur descripteur référençant cette file.

note: type: Plain text
en: On success B<mq_unlink>()  returns 0; on error, -1 is returned, with I<errno> set to indicate the error.
fr: En cas de succès, B<mq_unlink>() renvoie 0. En cas d'erreur, elle renvoie -1 et définit I<errno> en conséquence.

note: type: Plain text
en: The caller does not have permission to unlink this message queue.
fr: L'appelant n'a pas les permissions de supprimer cette file de messages.

note: type: Plain text
en: There is no message queue with the given I<name>.
fr: Il n'y a pas de file de messages avec le nom I<name>.

note: type: TH
en: 2014-02-24
fr: 24 février 2014

note: type: Plain text
en: msgctl - System V message control operations
fr: msgctl - Contrôler les messages System V

note: type: Plain text
en: B<msgctl>()  performs the control operation specified by I<cmd> on the System V message queue with identifier I<msqid>.
fr: Cette fonction permet d'effectuer l'opération indiquée par I<cmd> sur la file de messages System V ayant l'identifiant I<msqid>.

note: type: Plain text
en: The I<msqid_ds> data structure is defined in I<E<lt>sys/msg.hE<gt>> as follows:
fr: La structure I<msqid_ds> est déclarée dans I<E<lt>sys/msg.hE<gt>> comme suit\ :

note: type: Plain text
en: struct msqid_ds {
        struct ipc_perm msg_perm;     /* Ownership and permissions */
        time_t          msg_stime;    /* Time of last msgsnd(2) */
        time_t          msg_rtime;    /* Time of last msgrcv(2) */
        time_t          msg_ctime;    /* Time of last change */
        unsigned long   __msg_cbytes; /* Current number of bytes in
                                         queue (nonstandard) */
        msgqnum_t       msg_qnum;     /* Current number of messages
                                         in queue */
        msglen_t        msg_qbytes;   /* Maximum number of bytes
                                         allowed in queue */
        pid_t           msg_lspid;    /* PID of last msgsnd(2) */
        pid_t           msg_lrpid;    /* PID of last msgrcv(2) */
    };
fr: struct msqid_ds {
        struct ipc_perm msg_perm;     /* Propriétaire et permissions */
        time_t          msg_stime;    /* Heure du dernier msgsnd(2) */
        time_t          msg_rtime;    /* Heure du dernier msgrcv(2) */
        time_t          msg_ctime;    /* Heure dernière modification */
        unsigned long   __msg_cbytes; /* Nombre actuel d'octets dans la
                                         file (non standard) */
        msgqnum_t       msg_qnum;     /* Nombre actuel de messages 
                                         dans la file */
        msglen_t        msg_qbytes;   /* Nombre maximal d'octets 
                                         autorisés dans la file */
        pid_t           msg_lspid;    /* PID du dernier msgsnd(2) */
        pid_t           msg_lrpid;    /* PID du dernier msgrcv(2) */
    };

note: type: Plain text
en: The I<ipc_perm> structure is defined as follows (the highlighted fields are settable using B<IPC_SET>):
fr: La structure I<ipc_perm> est définie de la façon suivante (les champs en gras peuvent être modifiés en utilisant B<IPC_SET>) :

note: type: Plain text
en: struct ipc_perm {
        key_t          __key;       /* Key supplied to msgget(2) */
        uid_t          B<uid>;         /* Effective UID of owner */
        gid_t          B<gid>;         /* Effective GID of owner */
        uid_t          cuid;        /* Effective UID of creator */
        gid_t          cgid;        /* Effective GID of creator */
        unsigned short B<mode>;        /* Permissions */
        unsigned short __seq;       /* Sequence number */
    };
fr: struct ipc_perm {
        key_t          __key;       /* Clé fournie à msgget(2) */
        uid_t          B<uid>;         /* UID effectif du propriétaire */
        gid_t          B<gid>;         /* GID effectif du propriétaire */
        uid_t          cuid;        /* UID effectif du créateur */
        gid_t          cgid;        /* GID effectif du créateur */
        unsigned short B<mode>;        /* Permissions */
        unsigned short __seq;       /* Numéro de séquence */
    };

note: type: Plain text
en: Valid values for I<cmd> are:
fr: Les valeurs autorisées pour I<cmd> sont\ :

note: type: Plain text
en: Copy information from the kernel data structure associated with I<msqid> into the I<msqid_ds> structure pointed to by I<buf>.  The caller must have read permission on the message queue.
fr: Copier les informations depuis la structure représentant la file de messages identifiée par I<msqid> dans la structure I<msqid_ds> pointée par I<buf>. L'appelant doit avoir des privilèges d'accès en lecture sur la file de messages.

note: type: Plain text
en: Write the values of some members of the I<msqid_ds> structure pointed to by I<buf> to the kernel data structure associated with this message queue, updating also its I<msg_ctime> member.  The following members of the structure are updated: I<msg_qbytes>, I<msg_perm.uid>, I<msg_perm.gid>, and (the least significant 9 bits of)  I<msg_perm.mode>.  The effective UID of the calling process must match the owner (I<msg_perm.uid>)  or creator (I<msg_perm.cuid>)  of the message queue, or the caller must be privileged.  Appropriate privilege (Linux: the B<CAP_SYS_RESOURCE> capability) is required to raise the I<msg_qbytes> value beyond the system parameter B<MSGMNB>.
fr: Écrire la valeur de certains champs de la structure I<msqid_ds> pointée par I<buf> dans la structure du noyau représentant la file de messages, en mettant à jour le champ I<msg_ctime>. Les champs suivants de la structure peuvent être mis à jour\ : I<msg_qbytes>, I<msg_perm.uid>, I<msg_perm.gid> et les 9 bits de poids faible de I<msg_perm.mode>. L'UID effectif du processus appelant doit être soit celui du propriétaire (I<msg_perm.uid>), soit celui du créateur (I<msg_perm.cuid>) de la file de messages, ou bien l'appelant doit être privilégié. Des privilèges particuliers (sous Linux, la capacité B<CAP_SYS_RESOURCE>) sont nécessaires pour augmenter la valeur de I<msg_qbytes> au\(hydessus de la constante système B<MSGMNB>.

note: type: Plain text
en: Immediately remove the message queue, awakening all waiting reader and writer processes (with an error return and I<errno> set to B<EIDRM>).  The calling process must have appropriate privileges or its effective user ID must be either that of the creator or owner of the message queue.  The third argument to B<msgctl>()  is ignored in this case.
fr: Effacer immédiatement la file de messages et ses structures de données, en réveillant tous les processus écrivains et lecteurs en attente. Ils obtiendront un code d'erreur, et I<errno> aura la valeur B<EIDRM>. L'UID effectif du processus appelant doit être celui du créateur ou du propriétaire de la file de messages, ou bien le processus appelant doit être privilégié. Le troisième argument de B<msgctl>() est dans ce cas ignoré.

note: type: TP
en: B<IPC_INFO> (Linux-specific)
fr: B<IPC_INFO> (spécifique à Linux)

note: type: Plain text
en: Returns information about system-wide message queue limits and parameters in the structure pointed to by I<buf>.  This structure is of type I<msginfo> (thus, a cast is required), defined in I<E<lt>sys/msg.hE<gt>> if the B<_GNU_SOURCE> feature test macro is defined:
fr: Renvoie des informations sur les limites et paramètres du système relatifs aux files de messages dans la structure pointée par I<buf>. Cette structure est de type I<msginfo> (ce qui nécessite un transtypage), qui est défini dans I<E<lt>sys/msg.hE<gt>> si la macro de test de fonctionnalités B<_GNU_SOURCE> est définie :

note: type: Plain text
en: struct msginfo {
        int msgpool; /* Size in kibibytes of buffer pool
                        used to hold message data;
                        unused within kernel */
        int msgmap;  /* Maximum number of entries in message
                        map; unused within kernel */
        int msgmax;  /* Maximum number of bytes that can be
                        written in a single message */
        int msgmnb;  /* Maximum number of bytes that can be
                        written to queue; used to initialize
                        msg_qbytes during queue creation
                        (msgget(2)) */
        int msgmni;  /* Maximum number of message queues */
        int msgssz;  /* Message segment size;
                        unused within kernel */
        int msgtql;  /* Maximum number of messages on all queues
                        in system; unused within kernel */
        unsigned short int msgseg;
                     /* Maximum number of segments;
                        unused within kernel */
    };
fr: struct msginfo {
        int msgpool; /* Taille en kibioctets du tampon utilisé
                        pour stocker les données des messages\ ;
                        pas utilisé par le noyau */
        int msgmap;  /* Nombre maximal d'entrées dans la table 
                        des messages\ ; pas utilisé par le noyau */
        int msgmax;  /* Nombre maximal d'octets pouvant être
                        écrits dans un seul message */
        int msgmnb;  /* Nombre maximal d'octets pouvant être 
                        écrits dans une file ; utilisé pour
                        initialiser msg_qbytes lors de la
                        création de la file (msgget(2)) */
        int msgmni;  /* Nombre maximal de files de message */
        int msgssz;  /* Taille du segment de message\ ;
                        pas utilisé par le noyau */
        int msgtql;  /* Nombre maximal de messages dans
                        toutes les files du système ;
                        pas utilisé par le noyau */
        unsigned short int msgseg;
                     /* Nombre maximal de segments\ ;
                        pas utilisé par le noyau */
    };

note: type: Plain text
en: The I<msgmni>, I<msgmax>, and I<msgmnb> settings can be changed via I</proc> files of the same name; see B<proc>(5)  for details.
fr: Les paramètres I<msgmni>, I<msgmax> et I<msgmnb> peuvent être modifiés via les fichiers du même nom dans I</proc>. Consultez B<proc>(5) pour plus de détails.

note: type: TP
en: B<MSG_INFO> (Linux-specific)
fr: B<MSG_INFO> (Spécifique à Linux)

note: type: Plain text
en: Returns a I<msginfo> structure containing the same information as for B<IPC_INFO>, except that the following fields are returned with information about system resources consumed by message queues: the I<msgpool> field returns the number of message queues that currently exist on the system; the I<msgmap> field returns the total number of messages in all queues on the system; and the I<msgtql> field returns the total number of bytes in all messages in all queues on the system.
fr: Renvoie une structure I<msginfo> contenant les mêmes informations que pour B<IPC_INFO>, sauf que les champs suivants contiennent des informations sur les ressources système utilisées par des files de messages\ : le champ I<msgpool> indique le nombre de files de messages existant actuellement sur le système\ ; le champ I<msgmap> contient le nombre total de messages dans l'ensemble des files du système\ ; enfin le champ I<msgtql> contient le nombre total d'octets dans tous les messages de toutes les files du système.

note: type: TP
en: B<MSG_STAT> (Linux-specific)
fr: B<MSG_STAT> (Spécifique à Linux)

note: type: Plain text
en: Returns a I<msqid_ds> structure as for B<IPC_STAT>.  However, the I<msqid> argument is not a queue identifier, but instead an index into the kernel's internal array that maintains information about all message queues on the system.
fr: Renvoie une structure I<msqid_ds> comme pour B<IPC_STAT>. Cependant, l'argument I<msqid> n'est pas l'identifiant d'une file, mais un indice dans le tableau interne au noyau qui contient des informations sur toutes les files de messages du système.

note: type: Plain text
en: On success, B<IPC_STAT>, B<IPC_SET>, and B<IPC_RMID> return 0.  A successful B<IPC_INFO> or B<MSG_INFO> operation returns the index of the highest used entry in the kernel's internal array recording information about all message queues.  (This information can be used with repeated B<MSG_STAT> operations to obtain information about all queues on the system.)  A successful B<MSG_STAT> operation returns the identifier of the queue whose index was given in I<msqid>.
fr: Si elles réussissent, les opérations B<IPC_STAT>, B<IPC_SET> et B<IPC_RMID> renvoient 0. Une opération B<IPC_INFO> ou B<MSG_INFO> réussie renvoie le plus grand indice d'un élément utilisé dans la table interne du noyau contenant des informations sur les files de messages. Cette information peut être utilisée par des opérations B<MSG_STAT> répétées afin d'obtenir des informations sur toutes les files du système. Une opération B<MSG_STAT> réussie renvoie l'identifiant de la file dont l'indice était donné dans I<msqid>.

note: type: Plain text
en: On error, -1 is returned with I<errno> indicating the error.
fr: En cas d'erreur -1 est renvoyé, et I<errno> contient le code d'erreur.

note: type: Plain text
en: On failure, I<errno> is set to one of the following:
fr: En cas d'erreur, I<errno> prend l'une des valeurs suivantes\ :

note: type: Plain text
en: The argument I<cmd> is equal to B<IPC_STAT> or B<MSG_STAT>, but the calling process does not have read permission on the message queue I<msqid>, and does not have the B<CAP_IPC_OWNER> capability.
fr: L'argument I<cmd> réclame l'opération B<IPC_STAT> ou B<MSG_STAT>, mais le processus appelant n'a pas d'accès en lecture sur la file de messages I<msqid>, et n'a pas la capacité B<CAP_IPC_OWNER>.

note: type: Plain text
en: The argument I<cmd> has the value B<IPC_SET> or B<IPC_STAT>, but the address pointed to by I<buf> isn't accessible.
fr: L'argument I<cmd> réclame l'opération B<IPC_SET> ou B<IPC_STAT> mais I<buf> pointe en dehors de l'espace d'adressage accessible.

note: type: Plain text
en: The message queue was removed.
fr: La file de messages a été supprimée.

note: type: Plain text
en: Invalid value for I<cmd> or I<msqid>.  Or: for a B<MSG_STAT> operation, the index value specified in I<msqid> referred to an array slot that is currently unused.
fr: I<cmd> ou I<msqid> ont une valeur illégale. Ou alors, dans le cas d'une opération B<MSG_STAT>, la valeur indiquée par I<msqid> pointe vers un élément de tableau qui n'est pas en cours d'utilisation.

note: type: Plain text
en: The argument I<cmd> has the value B<IPC_SET> or B<IPC_RMID>, but the effective user ID of the calling process is not the creator (as found in I<msg_perm.cuid>)  or the owner (as found in I<msg_perm.uid>)  of the message queue, and the caller is not privileged (Linux: does not have the B<CAP_SYS_ADMIN> capability).
fr: L'argument I<cmd> réclame l'opération B<IPC_SET> ou B<IPC_RMID> mais l'UID effectif du processus appelant n'est pas le créateur (comme indiqué dans I<msg_perm.cuid>) ou le propriétaire (comme indiqué dans I<msg_perm.uid>) de la file de messages, et l'appelant n'est pas privilégié (sous Linux, il n'a pas la capacité B<CAP_SYS_ADMIN>).

note: type: Plain text
en: An attempt (B<IPC_SET>)  was made to increase I<msg_qbytes> beyond the system parameter B<MSGMNB>, but the caller is not privileged (Linux: does not have the B<CAP_SYS_RESOURCE> capability).
fr: Il a été tenté (via B<IPC_SET>) d'augmenter I<msg_qbytes> au-delà du paramètre système B<MSGMNB>, mais l'appelant n'est pas privilégié (sous Linux, il n'a pas la capacité B<CAP_SYS_RESOURCE>).

note: Like Linux, the FreeBSD man pages still document the inclusion of these header files. type: Plain text
en: The inclusion of I<E<lt>sys/types.hE<gt>> and I<E<lt>sys/ipc.hE<gt>> isn't required on Linux or by any version of POSIX.  However, some old implementations required the inclusion of these header files, and the SVID also documented their inclusion.  Applications intended to be portable to such old systems may need to include these header files.
fr: L'inclusion de I<E<lt>sys/types.hE<gt>> et I<E<lt>sys/ipc.hE<gt>> n'est pas nécessaire sous Linux et n'est exigée par aucune version de POSIX. Cependant, certaines implémentations anciennes nécessitent l'inclusion de ces fichiers d'en-tête, et le SVID documente aussi leur inclusion. Les applications ayant pour but d'être portables pourraient inclure ces fichiers d'en-tête.

note: type: Plain text
en: The B<IPC_INFO>, B<MSG_STAT> and B<MSG_INFO> operations are used by the B<ipcs>(1)  program to provide information on allocated resources.  In the future these may modified or moved to a I</proc> filesystem interface.
fr: Les appels B<IPC_INFO>, B<MSG_STAT> et B<MSG_INFO> sont utilisés par le programme B<ipcs>(1) pour fournir des informations sur les ressources allouées. À l'avenir, ceci pourra être modifié ou remplacé par une interface avec le système de fichiers I</proc>.

note: type: Plain text
en: Various fields in the I<struct msqid_ds> were typed as I<short> under Linux 2.2 and have become I<long> under Linux 2.4.  To take advantage of this, a recompilation under glibc-2.1.91 or later should suffice.  (The kernel distinguishes old and new calls by an B<IPC_64> flag in I<cmd>.)
fr: Divers champs de la structure I<struct msqid_ds> étaient de type I<short> sous Linux 2.2 et sont devenus de type I<long> sous Linux 2.4. Pour en profiter, une recompilation avec la glibc 2.1.91 ou ultérieure devrait suffire. (Le noyau distingue les appels anciens et nouveaux par un drapeau B<IPC_64> dans I<cmd>.)

note: type: TH
en: 2012-05-31
fr: 31 mai 2012

note: type: Plain text
en: msgget - get a System V message queue identifier
fr: msgget - Obtenir un identifiant de file de messages System V

note: type: Plain text
en: The B<msgget>()  system call returns the System V message queue identifier associated with the value of the I<key> argument.  A new message queue is created if I<key> has the value B<IPC_PRIVATE> or I<key> isn't B<IPC_PRIVATE>, no message queue with the given key I<key> exists, and B<IPC_CREAT> is specified in I<msgflg>.
fr: L'appel système B<msgget>() renvoie l'identifiant de la file de messages System V associée à la clé I<key>. Une nouvelle file de messages est créée si I<key> a la valeur B<IPC_PRIVATE> ou bien si I<key> n'est pas B<IPC_PRIVATE>, aucune file de messages n'est associée à I<key>, et B<IPC_CREAT> a été introduit dans I<msgflg>.

note: type: Plain text
en: If I<msgflg> specifies both B<IPC_CREAT> and B<IPC_EXCL> and a message queue already exists for I<key>, then B<msgget>()  fails with I<errno> set to B<EEXIST>.  (This is analogous to the effect of the combination B<O_CREAT | O_EXCL> for B<open>(2).)
fr: Si I<msgflg> indique à la fois B<IPC_CREAT> et B<IPC_EXCL> et une file de messages est déjà associée à I<key>, B<msgget>() échoue en positionnant I<errno> à B<EEXIST>. Ceci est similaire au comportement de B<open>(2) avec la combinaison B<O_CREAT | O_EXCL>.

note: type: Plain text
en: Upon creation, the least significant bits of the argument I<msgflg> define the permissions of the message queue.  These permission bits have the same format and semantics as the permissions specified for the I<mode> argument of B<open>(2).  (The execute permissions are not used.)
fr: Lors de la création, les bits de poids faibles de l'argument I<msgflg> définissent les permissions d'accès à la file de messages (pour le propriétaire, le groupe, et les autres) avec le même format et la même signification que les permissions d'accès (I<mode>) dans les appels B<open>(2). (Les permissions d'exécution ne sont pas utilisées).

note: type: Plain text
en: If a new message queue is created, then its associated data structure I<msqid_ds> (see B<msgctl>(2))  is initialized as follows:
fr: Pendant la création, l'appel système initialise la structure système I<msqid_ds> (consultez B<msgctl>(2)) de la file de messages comme suit\ :

note: type: Plain text
en: I<msg_perm.cuid> and I<msg_perm.uid> are set to the effective user ID of the calling process.
fr: I<msg_perm.cuid> et I<msg_perm.uid> sont remplis avec l'UID effectif du processus appelant.

note: type: Plain text
en: I<msg_perm.cgid> and I<msg_perm.gid> are set to the effective group ID of the calling process.
fr: I<msg_perm.cgid> et I<msg_perm.gid> sont remplis avec le GID effectif du processus appelant.

note: type: Plain text
en: The least significant 9 bits of I<msg_perm.mode> are set to the least significant 9 bits of I<msgflg>.
fr: Les 9 bits de poids faibles de I<msgflg> sont copiés dans les 9 bits de poids faibles de B<msg_perm.mode>.

note: type: Plain text
en: I<msg_qnum>, I<msg_lspid>, I<msg_lrpid>, I<msg_stime>, and I<msg_rtime> are set to 0.
fr: I<msg_qnum>, I<msg_lspid>, I<msg_lrpid>, I<msg_stime> et I<msg_rtime> sont configurés à 0.

note: type: Plain text
en: I<msg_ctime> is set to the current time.
fr: I<msg_ctime> est rempli avec l'heure actuelle.

note: type: Plain text
en: I<msg_qbytes> is set to the system limit B<MSGMNB>.
fr: I<msg_qbytes> est rempli avec la limite système B<MSGMNB>.

note: type: Plain text
en: If the message queue already exists the permissions are verified, and a check is made to see if it is marked for destruction.
fr: Si la file de messages existe déjà, les permissions d'accès sont contrôlées, et une vérification est faite pour voir si la file est prête à être détruite.

note: type: Plain text
en: If successful, the return value will be the message queue identifier (a nonnegative integer), otherwise -1 with I<errno> indicating the error.
fr: B<msgget>() renvoie l'identifiant de la file de messages (un entier positif), s'il réussit. En cas d'échec -1 est renvoyé et I<errno> contient le code d'erreur.

note: type: Plain text
en: On failure, I<errno> is set to one of the following values:
fr: En cas d'échec, I<errno> prend l'une des valeurs suivantes\ :

note: type: Plain text
en: A message queue exists for I<key>, but the calling process does not have permission to access the queue, and does not have the B<CAP_IPC_OWNER> capability.
fr: Une file de messages existe associée à la clé I<key>, mais le processus appelant n'a pas de permissions pour accéder à cette file et n'a pas la capacité B<CAP_IPC_OWNER>.

note: type: Plain text
en: A message queue exists for I<key> and I<msgflg> specified both B<IPC_CREAT> and B<IPC_EXCL>.
fr: Une file de messages existe associée à la clé I<key> et I<msgflg> réclame à la fois B<IPC_CREAT> et B<IPC_EXCL>.

note: type: Plain text
en: No message queue exists for I<key> and I<msgflg> did not specify B<IPC_CREAT>.
fr: Aucune file de messages n'existe associée à la clé I<key> et I<msgflg> ne contient pas B<IPC_CREAT>.

note: type: Plain text
en: A message queue has to be created but the system does not have enough memory for the new data structure.
fr: Le système doit créer une file de messages, mais n'a pas assez de mémoire pour les nouvelles structures de données.

note: type: Plain text
en: A message queue has to be created but the system limit for the maximum number of message queues (B<MSGMNI>)  would be exceeded.
fr: Le nombre maximal de files de messages sur le système (B<MSGMNI>) est atteint.

note: type: Plain text
en: B<IPC_PRIVATE> isn't a flag field but a I<key_t> type.  If this special value is used for I<key>, the system call ignores everything but the least significant 9 bits of I<msgflg> and creates a new message queue (on success).
fr: B<IPC_PRIVATE> n'est pas destiné au champ I<msgflg> mais est du type I<key_t>. Si cette valeur spéciale est fournie à la place de I<key>, l'appel système ignorera tout sauf les 9 bits de poids faibles de I<msgflg> et créera une nouvelle file de messages.

note: type: Plain text
en: The following is a system limit on message queue resources affecting a B<msgget>()  call:
fr: La limite système concernant les files de messages et affectant B<msgget>() est

note: type: Plain text
en: System wide maximum number of message queues: policy dependent (on Linux, this limit can be read and modified via I</proc/sys/kernel/msgmni>).
fr: Nombre maximal de files de messages sur le système (sous Linux, cette limite peut être consultée et modifiée grâce au fichier I</proc/sys/kernel/msgmni>).

note: type: SS
en: Linux notes
fr: Notes sur Linux

note: type: Plain text
en: Until version 2.3.20 Linux would return B<EIDRM> for a B<msgget>()  on a message queue scheduled for deletion.
fr: Jusqu'à la version 2.3.20, Linux renvoyait B<EIDRM> pour un B<msgget>() sur une file de messages prête à être supprimée.

note: type: Plain text
en: The name choice B<IPC_PRIVATE> was perhaps unfortunate, B<IPC_NEW> would more clearly show its function.
fr: Le choix du nom B<IPC_PRIVATE> est malheureux, B<IPC_NEW> aurait mieux décrit sa fonction.

note: type: TH
en: 2014-03-17
fr: 17 mars 2014

note: type: Plain text
en: msgrcv, msgsnd - System V message queue operations
fr: msgrcv, msgsnd - Opérations sur les files de messages System V

note: type: Plain text
en: The B<msgsnd>()  and B<msgrcv>()  system calls are used, respectively, to send messages to, and receive messages from, a System V message queue.  The calling process must have write permission on the message queue in order to send a message, and read permission to receive a message.
fr: Les appels système B<msgsnd>() et B<msgrcv>() servent respectivement à envoyer et à recevoir des messages d'une file de messages System V. Le processus appelant doit avoir une permission d'écriture sur la file pour envoyer un message, et une permission de lecture pour en recevoir un.

note: type: Plain text
en: The I<msgp> argument is a pointer to a caller-defined structure of the following general form:
fr: L'argument I<msgp> est un pointeur vers une structure définie par l'appelant de forme générale suivante\ :

note: type: Plain text
en: struct msgbuf {
        long mtype;       /* message type, must be E<gt> 0 */
        char mtext[1];    /* message data */
    };
fr: struct msgbuf {
        long mtype;       /* type de message, doit être E<gt> 0 */
        char mtext[1];    /* contenu du message */
    };

note: type: Plain text
en: The I<mtext> field is an array (or other structure) whose size is specified by I<msgsz>, a nonnegative integer value.  Messages of zero length (i.e., no I<mtext> field) are permitted.  The I<mtype> field must have a strictly positive integer value.  This value can be used by the receiving process for message selection (see the description of B<msgrcv>()  below).
fr: Le champ I<mtext> est un tableau ou autre structure de taille I<msgsz>, valeur entière positive ou nulle. Les message de taille nulle (sans champ I<mtext>) sont autorisés. Le membre I<mtype> doit avoir une valeur strictement positive qui puisse être utilisée par le processus lecteur pour la sélection de messages (voir la description de B<msgrcv> ci\(hydessous).

note: type: Plain text
en: The B<msgsnd>()  system call appends a copy of the message pointed to by I<msgp> to the message queue whose identifier is specified by I<msqid>.
fr: L'appel système B<msgsnd>() insère une copie du message pointé par l'argument I<msgp> dans la file dont l'identifiant est indiqué par la valeur de l'argument I<msqid>.

note: type: Plain text
en: If sufficient space is available in the queue, B<msgsnd>()  succeeds immediately.  (The queue capacity is defined by the I<msg_qbytes> field in the associated data structure for the message queue.  During queue creation this field is initialized to B<MSGMNB> bytes, but this limit can be modified using B<msgctl>(2).)  If insufficient space is available in the queue, then the default behavior of B<msgsnd>()  is to block until space becomes available.  If B<IPC_NOWAIT> is specified in I<msgflg>, then the call instead fails with the error B<EAGAIN>.
fr: S'il y a assez de place dans la file, B<msgsnd>() réussit immédiatement. (La capacité de la file est définie par le champ I<msg_qbytes> de la structure associée à la file de messages. Durant la création de la file, ce champ est initialisé à B<MSGMNB> octets, mais cette limite peut être modifiée avec B<msgctl>(2).) S'il n'y a pas assez de place, alors le comportement par défaut de B<msgsnd>() est de bloquer jusqu'à obtenir suffisamment d'espace. En indiquant B<IPC_NOWAIT> dans l'argument I<msgflg>, le message ne sera pas envoyé et l'appel système échouera en retournant B<EAGAIN> dans B<errno>.

note: type: Plain text
en: A blocked B<msgsnd>()  call may also fail if:
fr: Un appel à B<msgsnd>() bloqué peut échouer si\ :

note: type: Plain text
en: the queue is removed, in which case the system call fails with I<errno> set to B<EIDRM>; or
fr: la file est supprimée, auquel cas l'appel système échoue avec I<errno> valant B<EIDRM> ; ou

note: type: Plain text
en: a signal is caught, in which case the system call fails with I<errno> set to B<EINTR>;B<see> B<signal>(7).  (B<msgsnd>()  is never automatically restarted after being interrupted by a signal handler, regardless of the setting of the B<SA_RESTART> flag when establishing a signal handler.)
fr: un signal a été intercepté, auquel cas l'appel système échoue avec I<errno> valant B<EINTR> ; consultez B<signal>(7). (B<msgsnd>() n'est jamais relancé automatiquement après interruption par un gestionnaire de signal, quelle que soit la configuration de B<SA_RESTART> lors de l'installation du gestionnaire.)

note: type: Plain text
en: Upon successful completion the message queue data structure is updated as follows:
fr: Si l'appel système réussit, la structure décrivant la file de messages est mise à jour comme suit.

note: type: Plain text
en: I<msg_lspid> is set to the process ID of the calling process.
fr: I<msg_lspid> contient le PID du processus appelant.

note: type: Plain text
en: I<msg_qnum> is incremented by 1.
fr: I<msg_qnum> est incrémenté de 1.

note: type: Plain text
en: I<msg_stime> is set to the current time.
fr: I<msg_stime> est rempli avec l'heure actuelle.

note: type: Plain text
en: The B<msgrcv>()  system call removes a message from the queue specified by I<msqid> and places it in the buffer pointed to by I<msgp>.
fr: L'appel système B<msgrcv>() supprime un message depuis la file indiquée par I<msqid> et le place dans le tampon pointé par I<msgp>.

note: type: Plain text
en: The argument I<msgsz> specifies the maximum size in bytes for the member I<mtext> of the structure pointed to by the I<msgp> argument.  If the message text has length greater than I<msgsz>, then the behavior depends on whether B<MSG_NOERROR> is specified in I<msgflg>.  If B<MSG_NOERROR> is specified, then the message text will be truncated (and the truncated part will be lost); if B<MSG_NOERROR> is not specified, then the message isn't removed from the queue and the system call fails returning -1 with I<errno> set to B<E2BIG>.
fr: L'argument I<msgsz> indique la taille maximale en octets du membre I<mtext> de la structure pointée par l'argument I<msgp>. Si le contenu du message est plus long que I<msgsz> octets, le comportement dépend de la présence ou non de B<MSG_NOERROR> dans I<msgflg>. Si B<MSG_NOERROR> est spécifié, alors le message sera tronqué (et la partie tronquée sera perdue)\ ; si B<MSG_NOERROR> n'est pas spécifié, le message ne sera pas extrait de la file, et l'appel système échouera en renvoyant -1 et en indiquant B<E2BIG> dans B<errno>.

note: type: Plain text
en: Unless B<MSG_COPY> is specified in I<msgflg> (see below), the I<msgtyp> argument specifies the type of message requested, as follows:
fr: À moins que B<MSG_COPY> ne soit indiqué dans I<msgflg> (voir ci-dessous), l’argument I<msgtyp> indique le type de message désiré.

note: type: Plain text
en: If I<msgtyp> is 0, then the first message in the queue is read.
fr: Si I<msgtyp> vaut 0, le premier message est lu.

note: type: Plain text
en: If I<msgtyp> is greater than 0, then the first message in the queue of type I<msgtyp> is read, unless B<MSG_EXCEPT> was specified in I<msgflg>, in which case the first message in the queue of type not equal to I<msgtyp> will be read.
fr: Si I<msgtyp> est supérieur à 0, alors le premier message de type I<msgtyp> est extrait de la file. Si I<msgflg> contient B<MSG_EXCEPT> l'inverse est effectué, le premier message de type différent de I<msgtyp> est extrait de la file.

note: type: Plain text
en: If I<msgtyp> is less than 0, then the first message in the queue with the lowest type less than or equal to the absolute value of I<msgtyp> will be read.
fr: Si I<msgtyp> est inférieur à 0, le premier message de la file avec un type inférieur ou égal à la valeur absolue de I<msgtyp> est extrait.

note: type: Plain text
en: The I<msgflg> argument is a bit mask constructed by ORing together zero or more of the following flags:
fr: L'argument I<msgflg> est composé d'un I<OU> binaire «\ |\ » avec les attributs suivants.

note: type: Plain text
en: Return immediately if no message of the requested type is in the queue.  The system call fails with I<errno> set to B<ENOMSG>.
fr: S’arrêter immédiatement si aucun message du type désiré n'est présent dans la file. L'appel système échoue et I<errno> est configuré à B<ENOMSG>.

note: type: TP
en: B<MSG_COPY> (since Linux 3.8)
fr: B<MSG_COPY> (depuis Linux 3.8)

note: commit 4a674f34ba04a002244edaf891b5da7fc1473ae8 type: Plain text
en: Nondestructively fetch a copy of the message at the ordinal position in the queue specified by I<msgtyp> (messages are considered to be numbered starting at 0).
fr: Récupérer une copie de façon non destructive du message dans la file à la position ordinale indiquée par I<msgtyp> (les messages sont considérées numérotés à partir de 0).

note: type: Plain text
en: This flag must be specified in conjunction with B<IPC_NOWAIT>, with the result that, if there is no message available at the given position, the call fails immediately with the error B<ENOMSG>.  Because they alter the meaning of I<msgtyp> in orthogonal ways, B<MSG_COPY> and B<MSG_EXCEPT> may not both be specified in I<msgflg>.
fr: Cet attribut doit être indiqué en conjonction avec B<IPC_NOWAIT>, de telle sorte que si aucun message n’est disponible à la position donnée, l’appel échoue immédiatement avec l’erreur B<ENOMSG>. Parce qu'ils modifient le sens de I<msgtyp> de manière opposée, B<MSG_COPY> et B<MSG_EXCEPT> ne peuvent être définis simultanément dans I<msgflg>.

note: type: Plain text
en: The B<MSG_COPY> flag was added for the implementation of the kernel checkpoint-restore facility and is available only if the kernel was built with the B<CONFIG_CHECKPOINT_RESTORE> option.
fr: L'attribut B<MSG_COPY> a été ajouté pour l’implémentation de point de restauration du noyau et n’est disponible que si le noyau a été compilé avec l’option B<CONFIG_CHECKPOINT_RESTORE>.

note: type: Plain text
en: Used with I<msgtyp> greater than 0 to read the first message in the queue with message type that differs from I<msgtyp>.
fr: Utilisé avec I<msgtyp> supérieur à 0 pour lire les messages de type différent de I<msgtyp>.

note: type: Plain text
en: To truncate the message text if longer than I<msgsz> bytes.
fr: Tronquer silencieusement les messages plus longs que I<msgsz> octets.

note: type: Plain text
en: If no message of the requested type is available and B<IPC_NOWAIT> isn't specified in I<msgflg>, the calling process is blocked until one of the following conditions occurs:
fr: Si aucun message du type requis n'est disponible et si on n'a pas demandé B<IPC_NOWAIT> dans I<msgflg>, le processus appelant est bloqué jusqu'à l'occurrence d'un des événements suivants.

note: type: Plain text
en: A message of the desired type is placed in the queue.
fr: Un message du type désiré arrive dans la file.

note: type: Plain text
en: The message queue is removed from the system.  In this case, the system call fails with I<errno> set to B<EIDRM>.
fr: La file de messages est supprimée. L'appel système échoue et I<errno> contient B<EIDRM>.

note: type: Plain text
en: The calling process catches a signal.  In this case, the system call fails with I<errno> set to B<EINTR>.  (B<msgrcv>()  is never automatically restarted after being interrupted by a signal handler, regardless of the setting of the B<SA_RESTART> flag when establishing a signal handler.)
fr: Le processus appelant intercepte un signal. Dans ce cas l'appel système échoue avec I<errno> valant B<EINTR>. (B<msgrcv>() n'est jamais relancé automatiquement après interruption par un gestionnaire de signal, quelle que soit la configuration de B<SA_RESTART> lors de l'installation du gestionnaire.)

note: type: Plain text
en: I<msg_lrpid> is set to the process ID of the calling process.
fr: I<msg_lrpid> est rempli avec le PID du processus appelant.

note: type: Plain text
en: I<msg_qnum> is decremented by 1.
fr: I<msg_qnum> est décrémenté de 1.

note: type: Plain text
en: I<msg_rtime> is set to the current time.
fr: I<msg_rtime> est rempli avec l'heure actuelle.

note: type: Plain text
en: On failure both functions return -1 with I<errno> indicating the error, otherwise B<msgsnd>()  returns 0 and B<msgrcv>()  returns the number of bytes actually copied into the I<mtext> array.
fr: En cas d'échec les deux appels système renvoient -1 et I<errno> contient le code d'erreur. Sinon B<msgsnd>() renvoie 0 et B<msgrcv>() renvoie le nombre d'octets copiés dans la table I<mtext>.

note: type: Plain text
en: When B<msgsnd>()  fails, I<errno> will be set to one among the following values:
fr: En cas d'échec de B<msgsnd>(), I<errno> aura l'une des valeurs suivantes.

note: type: Plain text
en: The calling process does not have write permission on the message queue, and does not have the B<CAP_IPC_OWNER> capability.
fr: Le processus appelant n'a pas de permissions d'écriture dans la file et n'a pas la capacité B<CAP_IPC_OWNER>.

note: type: Plain text
en: The message can't be sent due to the I<msg_qbytes> limit for the queue and B<IPC_NOWAIT> was specified in I<msgflg>.
fr: Le message n'a pas pu être envoyé à cause de la limite I<msg_qbytes> pour la file et de la requête B<IPC_NOWAIT> dans I<msgflg>.

note: type: Plain text
en: The address pointed to by I<msgp> isn't accessible.
fr: I<msgp> pointe en dehors de l'espace d'adressage accessible.

note: type: Plain text
en: Sleeping on a full message queue condition, the process caught a signal.
fr: Un signal est arrivé avant d'avoir pu écrire quoi que ce soit.

note: type: Plain text
en: Invalid I<msqid> value, or nonpositive I<mtype> value, or invalid I<msgsz> value (less than 0 or greater than the system value B<MSGMAX>).
fr: I<msqid> est invalide, ou bien I<mtype> n'est pas positif, ou bien I<msgsz> est invalide (négatif ou supérieur à la valeur B<MSGMAX> du système).

note: type: Plain text
en: The system does not have enough memory to make a copy of the message pointed to by I<msgp>.
fr: Le système n'a pas assez de mémoire pour copier le message pointé par I<msgp>.

note: type: Plain text
en: When B<msgrcv>()  fails, I<errno> will be set to one among the following values:
fr: En cas d'échec de B<msgrcv>(), I<errno> prend l'une des valeurs suivantes.

note: type: Plain text
en: The message text length is greater than I<msgsz> and B<MSG_NOERROR> isn't specified in I<msgflg>.
fr: Le message est plus long que I<msgsz>, et B<MSG_NOERROR> n'a pas été indiqué dans I<msgflg>.

note: type: Plain text
en: The calling process does not have read permission on the message queue, and does not have the B<CAP_IPC_OWNER> capability.
fr: Le processus appelant n'a pas de permission de lecture dans la file et n'a pas la capacité B<CAP_IPC_OWNER>.

note: type: Plain text
en: No message was available in the queue and B<IPC_NOWAIT> was specified in I<msgflg>.
fr: Aucun message n'est disponible dans la file, et B<IPC_NOWAIT> est spécifié dans I<msgflg>.

note: type: Plain text
en: While the process was sleeping to receive a message, the message queue was removed.
fr: La file de messages a été supprimée alors que le processus attendait un message.

note: type: Plain text
en: While the process was sleeping to receive a message, the process caught a signal; see B<signal>(7).
fr: Un signal est arrivé avant d'avoir pu lire quoi que ce soit ; consultez B<signal>(7).

note: type: Plain text
en: I<msgqid> was invalid, or I<msgsz> was less than 0.
fr: I<msgqid> ou I<msgsz> invalides.

note: type: TP
en: B<EINVAL> (since Linux 3.14)
fr: B<EINVAL> (depuis Linux 3.14)

note: type: Plain text
en: I<msgflg> specified B<MSG_COPY>, but not B<IPC_NOWAIT>.
fr: I<msgflg> définit B<MSG_COPY> sans définir B<IPC_NOWAIT>.

note: type: Plain text
en: I<msgflg> specified both B<MSG_COPY> and B<MSG_EXCEPT>.
fr: I<msgflg> définit à la fois B<MSG_COPY> et B<MSG_EXCEPT>.

note: type: Plain text
en: B<IPC_NOWAIT> was specified in I<msgflg> and no message of the requested type existed on the message queue.
fr: B<IPC_NOWAIT> a été indiqué dans I<msgflg> et aucun message du type réclamé n'existe dans la file.

note: type: Plain text
en: B<IPC_NOWAIT> and B<MSG_COPY> were specified in I<msgflg> and the queue contains less than I<msgtyp> messages.
fr: B<IPC_NOWAIT> et B<MSG_COPY> ont été indiqués dans I<msgflg> et la file contient moins de I<msgtyp> messages.

note: type: TP
en: B<ENOSYS> (since Linux 3.8)
fr: B<ENOSYS> (depuis Linux 3.8)

note: type: Plain text
en: I<MSG_COPY> was specified in I<msgflg>, and this kernel was configured without B<CONFIG_CHECKPOINT_RESTORE>.
fr: B<MSG_COPY> a été indiqué dans I<msgflg> et le noyau a été configuré sans B<CONFIG_CHECKPOINT_RESTORE>.

note: MSG_COPY since glibc 2.18 type: Plain text
en: The B<MSG_EXCEPT> and B<MSG_COPY> flags are Linux-specific; their definitions can be obtained by defining the B<_GNU_SOURCE> feature test macro.
fr: Les attributs B<MSG_EXCEPT> et B<MSG_COPY> sont spécifiques à Linux. Leur définition peut être obtenue en définissant la macro de test de fonctionnalités B<_GNU_SOURCE>.

note: type: Plain text
en: The I<msgp> argument is declared as I<struct msgbuf *> with libc4, libc5, glibc 2.0, glibc 2.1.  It is declared as I<void *> with glibc 2.2 and later, as required by SUSv2 and SUSv3.
fr: L'argument I<msgp> est déclaré comme un I<struct msgbuf *> avec les bibliothèques libc4, libc5, glibc 2.0, glibc 2.1. Il est déclaré comme un I<void *> avec la bibliothèque glibc 2.2, suivant ainsi les spécifications SUSv2 et SUSv3.

note: type: Plain text
en: The following limits on message queue resources affect the B<msgsnd>()  call:
fr: Les limites suivantes concernent les files de messages et affectent l’appel B<msgsnd>().

note: type: Plain text
en: Maximum size for a message text: 8192 bytes (on Linux, this limit can be read and modified via I</proc/sys/kernel/msgmax>).
fr: Taille maximale d'un message\ : 8192 octets (sous Linux, cette limite peut être lue et modifiée grâce au fichier I</proc/sys/kernel/msgmax>).

note: type: Plain text
en: Default maximum size in bytes of a message queue: 16384 bytes (on Linux, this limit can be read and modified via I</proc/sys/kernel/msgmnb>).  The superuser can increase the size of a message queue beyond B<MSGMNB> by a B<msgctl>(2)  system call.
fr: Taille maximale, en octets, d'une file de messages\ : 16384 octets (sous Linux, elle peut être lue et modifiée grâce au fichier I</proc/sys/kernel/msgmnb>). Le superutilisateur peut augmenter la taille d'une file de messages au-delà de B<MSGMNB> en utilisant l'appel système B<msgctl>(2).

note: type: Plain text
en: The implementation has no intrinsic limits for the system wide maximum number of message headers (B<MSGTQL>)  and for the system wide maximum size in bytes of the message pool (B<MSGPOOL>).
fr: L'implémentation des files de messages sous Linux n'a pas de limite intrinsèque pour le nombre maximal d'en\(hytêtes de messages (B<MSGTQL>) et la taille maximale, en octets, de l'ensemble de tous les messages sur le système (B<MSGPOOL>).

note: FIXME http://marc.info/?l=linux-kernel&m=139048542803605&w=2 commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c type: Plain text
en: In Linux 3.13 and earlier, if B<msgrcv>()  was called with the B<MSG_COPY> flag, but without B<IPC_NOWAIT>, and the message queue contained less than I<msgtyp> messages, then the call would block until the next message is written to the queue.  At that point, the call would return a copy of the message, I<regardless> of whether that message was at the ordinal position I<msgtyp>.  This bug is fixed in Linux 3.14.
fr: Jusqu'à la version Linux 3.13, si B<msgrcv>() était appelé avec l’attribut B<MSG_COPY>, mais sans B<IPC_NOWAIT>, et que la file de messages contenait moins de B<msgtyp> messages, alors l’appel bloquait jusqu’à ce que le message suivant soit écrit dans la file. À ce moment là, l’appel renvoyait une copie du message, I<quelle que soit> la position ordinale I<msgtyp> de ce message. Ce bogue est corrigé depuis Linux 3.14.

note: FIXME http://marc.info/?l=linux-kernel&m=139048542803605&w=2 commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c type: Plain text
en: Specifying both B<MSG_COPY> and B<MSC_EXCEPT> in I<msgflg> is a logical error (since these flags impose different interpretations on I<msgtyp>).  In Linux 3.13 and earlier, this error was not diagnosed by B<msgrcv>().  This bug is fixed in Linux 3.14.
fr: Indiquer à la fois B<MSG_COPY> et B<MSC_EXCEPT> dans I<msgflg> est une erreur de logique (puisque ces attributs imposent des interprétations différentes de I<msgtyp>). Jusqu'à Linux 3.13, cette erreur n’était pas diagnostiquée par I<msgsrv>(). Ce bogue est corrigé depuis Linux 3.14.
