dwww Home | Manual pages | Find package

mq_open(3)                 Library Functions Manual                 mq_open(3)

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_over-
       view(7).

       L'argument oflag spécifie les drapeaux qui contrôlent l'opération d'ap-
       pel (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  circons-
              tances où mq_receive(3) et mq_send(3) devraient être normalement
              bloquantes, ces fonctions échoueront avec le code  d'erreur  EA-
              GAIN.

       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 per-
       mettra. 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 msg-
              size_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 li-
              mites.

       EMFILE La limite par processus du nombre de fichiers ouverts et de des-
              cripteurs  de  file de messages a été atteinte (voir la descrip-
              tion de RLIMIT_NOFILE dans getrlimit(2)).

       ENAMETOOLONG
              nom est trop long.

       ENFILE La limite à l'échelle du système du nombre total de fichiers ou-
              verts 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  mes-
              sages.  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 │
       └─────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

NOTES
   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 biblio-
       thèque C transmet le nom sans la barre oblique initiale  (par  exemple,
       name+1) à l'appel système.'

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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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.03  15 décembre 2022                     mq_open(3)

Generated by dwww version 1.15 on Sat Jun 29 01:33:51 CEST 2024.