Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       mq_open - Ouvrir une file de messages

BIBLIOTHÈQUE

       Bibliothèque de temps réel (librt, -lrt)

SYNOPSIS

       #include <fcntl.h>           /* Pour les constantes O_* */
       #include <sys/stat.h>        /* Pour les constantes des modes */
       #include <mqueue.h>

       mqd_t mq_open(const char *nom, int oflag);
       mqd_t mq_open(const char *nom, int oflag, mode_t mode,
                     struct mq_attr *attr);

DESCRIPTION

       La  fonction mq_open() crée une nouvelle file de messages POSIX, ou ouvre une file de messages existante.
       La  file  est  identifiée  par  nom.  Pour  plus  de  détails  sur  la  construction  de  nom,  consulter
       mq_overview(7).

       L'argument  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 <fcntl.h>). Un unique drapeau  parmi  les  suivants  doit
       être spécifié dans oflag :

       O_RDONLY
              Ouvrir une file pour seulement recevoir des messages.

       O_WRONLY
              Ouvrir une file pour seulement envoyer des messages.

       O_RDWR Ouvrir une file pour soit envoyer, soit recevoir des messages.

       Zéro ou plusieurs des drapeaux suivants peuvent être ajoutés avec un ou binaire dans oflag :

       O_CLOEXEC (depuis Linux 2.6.26)
              Régler  le  drapeau  «  close-on-exec » pour le descripteur de file de messages. Consulter open(2)
              pour une discussion sur l'utilité de ce drapeau.

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

       O_EXCL Si O_CREAT est spécifié dans oflag, et si une file de nom name existe déjà, alors elle échouera et
              renverra le code d'erreur EEXIST.

       O_NONBLOCK
              Ouvrir  une file en mode non bloquant. Dans de telles circonstances où mq_receive(3) et mq_send(3)
              devraient être normalement bloquantes, ces fonctions échoueront avec le code d'erreur EAGAIN.

       Si O_CREAT est spécifié dans oflag, alors deux arguments additionnels doivent être spécifiés.  L'argument
       mode  spécifie  les  permissions de la nouvelle file, comme pour open(2) (les définitions symboliques des
       bits de permissions peuvent être obtenues en incluant <sys/stat.h>). La définition  des  permissions  est
       masquée avec l'« umask » du processus.

       Les  champs  des  struct  mq_attr pointés vers attr spécifient le nombre maximal de messages et la taille
       maximale des messages que la file permettra. Cette structure est définie comme suit :

           struct mq_attr {
               long mq_flags;       /* Drapeaux (ignoré pour mq_open()) */
               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 */
                                       (ignoré pour mq_open()) */
           };

       Seuls les champs mq_maxmsg et mq_msgsize sont employés lors de l'appel de mq_open() ;  les  valeurs  dans
       les champs restants sont ignorées.

       Si  attr  est  NULL,  alors la file est créée avec les attributs par défaut définis par l'implémentation.
       Depuis Linux 3.5, deux fichiers de /proc peuvent être utilisés pour contrôler ces valeurs  par  défaut  ;
       consulter mq_overview(7) pour plus de détails.

VALEUR RENVOYÉE

       En  cas  de  succès,  mq_open()  renvoie  un  descripteur  de file de messages à utiliser avec les autres
       fonctions des files de messages. En cas d'erreur, mq_open() renvoie (mqd_t) -1, avec errno définie.

ERREURS

       EACCES La file existe mais l'appelant n'a pas les permissions pour l'ouvrir dans le mode spécifié.

       EACCES name contient plus d'un caratère « / ».

       EEXIST O_CREAT et O_EXCL sont spécifiés dans oflag, mais une file avec le même nom existe déjà.

       EINVAL nom ne suit pas le format de mq_overview(7).

       EINVAL O_CREAT  était  spécifié  dans  oflag,  et  attr  était  non   NULL,   mais   attr->mq_maxmsg   ou
              attr->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é  CAP_SYS_RESOURCE),  attr->mq_maxmsg  doit  être
              inférieur ou égal à la limite msg_max, et attr->mq_msgsize doit être inférieur ou égal à la limite
              msgsize_max.  En  plus,  même  avec un processus privilégié, attr->mq_maxmsg ne peut pas être plus
              grand que la limite HARD_MAX. Consulter mq_overview(7) pour les détails sur ces limites.

       EMFILE La limite par processus du nombre de fichiers ouverts et de descripteurs de file de messages a été
              atteinte (voir la description de RLIMIT_NOFILE dans getrlimit(2)).

       ENAMETOOLONG
              nom est trop long.

       ENFILE La limite à l'échelle du système du nombre total de fichiers ouverts et de files de messages a été
              atteinte.

       ENOENT Le drapeau O_CREAT n'a pas été spécifié dans oflag, et aucune file avec le nom name n'existe.

       ENOENT name est juste « / » suivi d'aucun autre caractère.

       ENOMEM Mémoire insuffisante.

       ENOSPC Pas assez d'espace pour la création de la nouvelle  file  de  messages.  Ceci  s'est  probablement
              produit car la limite queues_max a été atteinte ; consulter mq_overview(7).

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ mq_open()                                                            │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

VERSIONS

   Différences entre bibliothèque C et noyau
       La  fonction  de  bibliothèque  mq_open()  est implémentée au-dessus de l'appel système du même nom. Elle
       réalise la vérification que le nom commence par une barre oblique (/), produisant une erreur EINVAL si ce
       n'est pas le cas. L'appel système du noyau s'attend à ce que le nom ne contienne  pas  de  barre  oblique
       initiale,  aussi  la  fonction  de  bibliothèque  C  transmet  le nom sans la barre oblique initiale (par
       exemple, name+1) à l'appel système.'

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

BOGUES

       Avant Linux 2.6.14, l'« umask » du processus n'est pas appliqué aux permissions spécifiées par mode.

VOIR AUSSI

       mq_close(3), mq_getattr(3), mq_notify(3), mq_receive(3), mq_send(3), mq_unlink(3), mq_overview(7)

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 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  à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                         mq_open(3)