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 *name, int oflag);
mqd_t mq_open(const char *name, int oflag, mode_t mode,
struct mq_attr *attr);
Effectuez l’édition des liens avec l’option -lrt.
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 name.
Pour plus de détails sur la construction de name, consultez
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 ou soit recevoir des messages.
Zéro ou plusieurs des drapeaux suivants peuvent être ajoutés avec un ou
binaire dans oflag :
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.
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.
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.
L’argument attr spécifie les attributs de la file. Consultez
mq_getattr(3) pour plus de détails. Si attr est NULL, alors la file est
créée avec les attributs par défaut de l’implémentation.
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 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. Consultez mq_overview(7) pour les détails sur ces
limites.
EMFILE Le processus a déjà le nombre maximal autorisé de fichiers et de
files de messages ouverts.
ENAMETOOLONG
name est trop long.
ENFILE La limite système du nombre 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 ; consultez mq_overview(7).
CONFORMITÉ
POSIX.1-2001.
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 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».