msgget(2) | System Calls Manual | msgget(2) |
msgget - Obtenir un identifiant de file de messages System V
Bibliothèque C standard (libc, -lc)
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
L'appel système msgget() renvoie l'identifiant de la file de messages System V associée à la valeur de la clé key. Il peut être utilisé soit pour obtenir l'identifiant d'une file de messages précédemment créée (quand msgflg vaut zéro et key n'a pas la valeur IPC_PRIVATE), soit pour créer un nouvel ensemble.
Une nouvelle file de messages est créée si key a la valeur IPC_PRIVATE ou bien si key n'est pas IPC_PRIVATE, aucune file de messages n'est associée à key, et IPC_CREAT a été introduit dans msgflg.
Si msgflg indique à la fois IPC_CREAT et IPC_EXCL et une file de messages est déjà associée à key, msgget() échoue en positionnant errno à EEXIST. Cela est similaire au comportement de open(2) avec la combinaison O_CREAT | O_EXCL.
Lors de la création, les bits de poids faible de l'argument msgflg définissent les permissions d'accès à la file de messages Ces bits de permission ont le même format et la même sémantique que les permissions indiquées pour l’argument mode dans les appels open(2). (Les permissions d'exécution ne sont pas utilisées).
Lors de la création d’une nouvelle file de messages, sa structure de données associée msqid_ds (consultez msgctl(2)) est initialisée comme suit :
Si la file de messages existe déjà, les permissions d'accès sont contrôlées, et une vérification est faite pour voir si la file est prête à être détruite.
msgget() renvoie l'identifiant de la file de messages (un entier non négatif), s'il réussit. En cas d'échec -1 est renvoyé et errno est défini pour indiquer l'erreur.
POSIX.1-2001, POSIX.1-2008, SVr4.
IPC_PRIVATE n'est pas destiné au champ msgflg mais est du type key_t. Si cette valeur spéciale est fournie pour key, l'appel système ignorera tout sauf les 9 bits de poids faible de msgflg et créera une nouvelle file de messages (en cas de succès).
La limite système concernant les ressources de files de messages et affectant un appel à msgget() est :
Jusqu'à Linux 2.3.20, Linux renvoyait EIDRM pour un msgget() sur une file de messages prête à être supprimée.
Le choix du nom IPC_PRIVATE est malheureux, IPC_NEW aurait mieux décrit sa fonction.
msgctl(2), msgrcv(2), msgsnd(2), ftok(3), capabilities(7), mq_overview(7), sysvipc(7)
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-Philippe MENGUAL <jpmengual@debian.org>
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.
5 février 2023 | Pages du manuel de Linux 6.03 |