.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH MQ_OPEN 3 "13 août 2020" Linux "Manuel du programmeur Linux" .SH NOM mq_open \- Ouvrir une file de messages .SH SYNOPSIS .nf \fB#include \fP /* Pour les constantes O_* */ \fB#include \fP /* Pour les constantes des modes */ \fB#include \fP .PP \fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB);\fP \fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB, mode_t \fP\fImode\fP\fB,\fP \fB struct mq_attr *\fP\fIattr\fP\fB);\fP .fi .PP Éditer les liens avec \fI\-lrt\fP. .SH DESCRIPTION La fonction \fBmq_open\fP() crée une nouvelle file de messages POSIX, ou ouvre une file de messages existante. La file est identifiée par \fIname\fP. Pour plus de détails sur la construction de \fIname\fP, consultez \fBmq_overview\fP(7). .PP L'argument \fIoflag\fP spécifie les drapeaux qui contrôlent l'opération d'appel (les définitions des valeurs des attributs peuvent être obtenues en incluant \fI\fP). Un unique drapeau parmi les suivants doit être spécifié dans \fIoflag\fP\ : .TP \fBO_RDONLY\fP Ouvrir une file pour seulement recevoir des messages. .TP \fBO_WRONLY\fP Ouvrir une file pour seulement envoyer des messages. .TP \fBO_RDWR\fP Ouvrir une file pour soit envoyer ou soit recevoir des messages. .PP Zéro ou plusieurs des drapeaux suivants peuvent être ajoutés avec un \fIou binaire\fP dans \fIoflag\fP\ : .TP \fBO_CLOEXEC\fP (since Linux 2.6.26) .\" commit 269f21344b23e552c21c9e2d7ca258479dcd7a0a Set the close\-on\-exec flag for the message queue descriptor. See \fBopen\fP(2) for a discussion of why this flag is useful. .TP \fBO_CREAT\fP .\" In reality the filesystem IDs are used on Linux. 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. .TP \fBO_EXCL\fP Si \fBO_CREAT\fP est spécifié dans \fIoflag\fP, et si une file de nom \fIname\fP existe déjà, alors elle échouera et renverra le code d'erreur \fBEEXIST\fP. .TP \fBO_NONBLOCK\fP Ouvrir une file en mode non bloquant. Dans de telles circonstances où \fBmq_receive\fP(3) et \fBmq_send\fP(3) devraient être normalement bloquantes, ces fonctions échoueront avec le code d'erreur \fBEAGAIN\fP. .PP If \fBO_CREAT\fP is specified in \fIoflag\fP, then two additional arguments must be supplied. The \fImode\fP argument specifies the permissions to be placed on the new queue, as for \fBopen\fP(2). (Symbolic definitions for the permissions bits can be obtained by including \fI\fP.) The permissions settings are masked against the process umask. .PP The fields of the \fIstruct mq_attr\fP pointed to \fIattr\fP specify the maximum number of messages and the maximum size of messages that the queue will allow. This structure is defined as follows: .PP .in +4n .EX struct mq_attr { long mq_flags; /* Flags (ignored for mq_open()) */ long mq_maxmsg; /* Max. # of messages on queue */ long mq_msgsize; /* Max. message size (bytes) */ long mq_curmsgs; /* # of messages currently in queue (ignored for mq_open()) */ }; .EE .in .PP Only the \fImq_maxmsg\fP and \fImq_msgsize\fP fields are employed when calling \fBmq_open\fP(); the values in the remaining fields are ignored. .PP If \fIattr\fP is NULL, then the queue is created with implementation\-defined default attributes. Since Linux 3.5, two \fI/proc\fP files can be used to control these defaults; see \fBmq_overview\fP(7) for details. .SH "VALEUR RENVOYÉE" En cas de succès, \fBmq_open\fP() renvoie un descripteur de file de messages à utiliser avec les autres fonctions des files de messages. En cas d'erreur, \fBmq_open\fP() renvoie \fI(mqd_t)\ \-1\fP, avec \fIerrno\fP définie. .SH ERREURS .TP \fBEACCES\fP La file existe mais l'appelant n'a pas les permissions pour l'ouvrir dans le mode spécifié. .TP \fBEACCES\fP .\" Note that this isn't consistent with the same case for sem_open() \fIname\fP contient plus d'un caratère «\ /\ ». .TP \fBEEXIST\fP \fBO_CREAT\fP et \fBO_EXCL\fP sont spécifiés dans \fIoflag\fP, mais une file avec le même nom existe déjà. .TP \fBEINVAL\fP .\" glibc checks whether the name starts with a "/" and if not, .\" gives this error \fIname\fP doesn't follow the format in \fBmq_overview\fP(7). .TP \fBEINVAL\fP \fBO_CREAT\fP était spécifié dans \fIoflag\fP, et \fIattr\fP était non NULL, mais \fIattr\->mq_maxmsg\fP ou \fIattr\->mq_msqsize\fP 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é \fBCAP_SYS_RESOURCE\fP), \fIattr\->mq_maxmsg\fP doit être inférieur ou égal à la limite \fImsg_max\fP, et \fIattr\->mq_msgsize\fP doit être inférieur ou égal à la limite \fImsgsize_max\fP. En plus, même avec un processus privilégié, \fIattr\->mq_maxmsg\fP ne peut pas être plus grand que la limite \fBHARD_MAX\fP. Consultez \fBmq_overview\fP(7) pour les détails sur ces limites. .TP \fBEMFILE\fP The per\-process limit on the number of open file and message queue descriptors has been reached (see the description of \fBRLIMIT_NOFILE\fP in \fBgetrlimit\fP(2)). .TP \fBENAMETOOLONG\fP \fInom\fP est trop long. .TP \fBENFILE\fP The system\-wide limit on the total number of open files and message queues has been reached. .TP \fBENOENT\fP Le drapeau \fBO_CREAT\fP n'a pas été spécifié dans \fIoflag\fP, et aucune file avec le nom \fIname\fP n'existe. .TP \fBENOENT\fP .\" Note that this isn't consistent with the same case for sem_open() \fIname\fP est juste «\ /\ » suivi d'aucun autre caractère. .TP \fBENOMEM\fP Mémoire insuffisante. .TP \fBENOSPC\fP Pas assez d'espace pour la création de la nouvelle file de messages. Ceci s'est probablement produit car la limite \fIqueues_max\fP a été atteinte\ ; consultez \fBmq_overview\fP(7). .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Interface Attribut Valeur T{ \fBmq_open\fP() T} Sécurité des threads MT\-Safe .TE .SH CONFORMITÉ POSIX.1\-2001, POSIX.1\-2008. .SH NOTES .SS "différences entre bibliothèque C et noyau" The \fBmq_open\fP() library function is implemented on top of a system call of the same name. The library function performs the check that the \fIname\fP starts with a slash (/), giving the \fBEINVAL\fP error if it does not. The kernel system call expects \fIname\fP to contain no preceding slash, so the C library function passes \fIname\fP without the preceding slash (i.e., \fIname+1\fP) to the system call. .SH BOGUES Avec les noyaux antérieurs à la version 2.6.14, l'«\ umask\ » du processus n'est pas appliqué aux permissions spécifiées par \fImode\fP. .SH "VOIR AUSSI" \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier et David Prévot . Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .