MQ_OPEN
Section : Manuel du programmeur Linux (
3)
Mise à jour de la version anglaise : 8 mai 2008
Index
Menu principal
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.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008