MQ_OPEN(3)

NOM
mq_open - Ouvrir une file de messages

SYNOPSIS
#include <fcntl.h>           /* Pour les constantes O_* */
#include <sys/stat.h>        /* Pour les constantes « mode » */
#include <mqueue.h>

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

Utilisez -lrt à l'edition de liens.

DESCRIPTION
mq_open() crée une nouvelle file de messages POSIX ou en ouvre une existante. La file est identifiée par name. Pour plus de détails sur la construction de name, voir mq_overview(7). L'argument oflag spécifie les attributs qui contrôlent les opérations de l'appel. (Les définitions de ces valeurs d'attributs peuvent être obtenues en incluant <fcntl.h>.) Un seul des attributs parmi les suivants doit être spécifié dans oflag :

O_RDONLY
    Ouvrir la file en reception seulement.

O_WRONLY
    Ouvrir la file en émission seulement.

O_RDWR
    Ouvrir la file en émission et reception.

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

O_NONBLOCK
    Ouvrir la file en mode non bloquant. Dans les cas où mq_receive(3) et mq_send(3) bloqueraient normalement, ces fonctions échoueront avec l'erreur EAGAIN.

O_CREAT
    Créer la file de messages si elle n'existe pas. Le propriétaire (UID) de la file de messages devient l'UID effectif du processus appelant. L'appartenance de groupe (GID) est fixée au GID effectif du processus appelant.

O_EXCL
    Si O_CREAT est spécifié dans oflag, et si une file du nom name existe déjà, elle échoue avec l'erreur EEXIST.

Si O_CREAT est spécifié dans oflag, deux arguments supplémentaires doivent être fournis. L'argument mode spécifie les permissions à attribuer à la nouvelle file, comme pour open(2). (Les définitions symboliques des bits de permissions peuvent être obtenues en incluant <sys/stat.h>.) Le réglage des permissions est « masqué » avec l'umask du processus. L'argument attr spécifie les attributs de la file. Voir mq_getattr(3) pour plus de détails. Si attr est NULL, la file est créée avec les attributs par défaut de l'implémentation.

VALEUR RENVOYÉE
Si elle réussit, mq_open() renvoie un descripteur de file de messages à utiliser avec les autres fonctions des files de messages. Si elle échoue mq_open() renvoie (mqd_t) -1, et renseigne errno en conséquence.

ERREURS

EACCES
    La file existe mais l'appelant n'a pas la permission de l'ouvrir dans le mode spécifié.

EEXIST
    O_CREAT et O_EXCL sont tous les deux spécifiés dans oflag, mais une file du nom de name existe déjà.

EINVAL
    O_CREAT était spécifié dans oflag, et attr n'était pas NULL, mais attr->mq_maxmsg ou attr->mq_msqsize n'était pas valide Ces deux champs doivent être positifs. Pour 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. De plus, même pour un processus privilégié attr->mq_maxmsg ne peut pas excéder la limite HARD_MAX. (Voir mq_overview(7) pour les détails sur ces limites.)

EMFILE
    Le processus a déjà le nombre maximum de fichiers et de files de messages ouverts.

ENAMETOOLONG
    name est trop long.

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

ENOENT
    L'attribut O_CREAT n'était pas spécifié dans oflag, et aucune file du nom de name n'existe.

ENOMEM
    Mémoire insuffisante.

ENOSPC
    Espace insuffisant pour la création d'une nouvellle file de messages. C'est dans doute parce que la limite queues_max a été atteinte ; voir mq_overview(7).

CONFORMITÉ
POSIX.1-2001.

BOGUES
Dans les noyaux antérieurs à la version 2.6.14, l'umask du processus n'était pas appliqué aux permissions indiquées dans 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

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 23 juillet 2006 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 mq_open ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.