Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       mq_open - Ouvrir une file de messages

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);

       Éditer les liens avec -lrt.

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 │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

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

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

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages 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/.

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  ⟨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⟩.