Man page - mq_open(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

mq_open

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
VERSIONS
Différences entre bibliothÚque C et noyau
STANDARDS
HISTORIQUE
BOGUES
VOIR AUSSI
TRADUCTION

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_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).

Image grohtml-3858913-1.png

VERSIONS

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

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001.

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