.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) .\" and Copyright 2004, 2005 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond .\" Modified Sun Feb 18 01:59:29 2001 by Andries E. Brouwer .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on CAP_IPC_OWNER requirement .\" Modified, 17 Jun 2004, Michael Kerrisk .\" Added notes on CAP_SYS_ADMIN requirement for IPC_SET and IPC_RMID .\" Modified, 11 Nov 2004, Michael Kerrisk .\" Language and formatting clean-ups .\" Added msqid_ds and ipc_perm structure definitions .\" 2005-08-02, mtk: Added IPC_INFO, MSG_INFO, MSG_STAT descriptions .\" 2018-03-20, dbueso: Added MSG_STAT_ANY description. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH MSGCTL 2 "1 novembre 2020" Linux "Manuel du programmeur Linux" .SH NOM msgctl \- Contrôler les messages System\ V .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP \fB#include \fP .PP \fBint msgctl(int \fP\fImsqid\fP\fB, int \fP\fIcmd\fP\fB, struct msqid_ds *\fP\fIbuf\fP\fB);\fP .fi .SH DESCRIPTION Cette fonction permet d'effectuer l'opération indiquée par \fIcmd\fP sur la file de messages System\ V ayant l'identifiant \fImsqid\fP. .PP La structure \fImsqid_ds\fP est déclarée dans \fI\fP comme suit\ : .PP .in +4n .EX struct msqid_ds { struct ipc_perm msg_perm; /* Propriétaire et droits */ time_t msg_stime; /* Heure du dernier msgsnd(2) */ time_t msg_rtime; /* Heure du dernier msgrcv(2) */ time_t msg_ctime; /* Heure de création ou de modification avec msgctl() */ unsigned long msg_cbytes; /* nombre d'octets dans la file */ msgqnum_t msg_qnum; /* nombre de messages dans la file */ msglen_t msg_qbytes; /* nombre maximal d'octets dans la file */ pid_t msg_lspid; /* PID du dernier msgsnd(2) */ pid_t msg_lrpid; /* PID du dernier msgrcv(2) */ }; .EE .in .PP Les champs de la structure \fImsgid_ds\fP sont les suivants\ : .TP 11 \fImsg_perm\fP Il s'agit d'une structure \fIipc_perm\fP (voir ci\-dessous) qui indique les droits d'accès à la file de messages. .TP \fImsg_stime\fP Heure du dernier appel système \fBmsgsnd\fP(2). .TP \fImsg_rtime\fP Heure du dernier appel système \fBmsgrcv\fP(2). .TP \fImsg_ctime\fP Heure de création de la file ou de la dernière opération \fBIPC_SET\fP de \fBmsgctl\fP(). .TP \fImsg_cbytes\fP Nombre d'octets de tous les messages actuellement dans la file de messages. Il s'agit d'une extension Linux non standard qui n'est pas indiquée dans POSIX. .TP \fImsg_qnum\fP Nombre de messages actuellement dans la file de messages. .TP \fImsg_qbytes\fP Nombre maximal d'octets de texte de message autorisés dans la file de messages. .TP \fImsg_lspid\fP Identifiant du processus qui a effectué le dernier appel système \fBmsgsnd\fP(2). .TP \fImsg_lrpid\fP Identifiant du processus qui a effectué le dernier appel système \fBmsgrcv\fP(2). .PP La structure \fIipc_perm\fP est définie de la façon suivante (les champs en gras peuvent être modifiés en utilisant \fBIPC_SET\fP)\ : .PP .in +4n .EX struct ipc_perm { key_t __key; /* Clé fournie à msgget(2) */ uid_t \fBuid\fP; /* UID effectif du propriétaire */ gid_t \fBgid\fP; /* GID effectif du propriétaire */ uid_t cuid; /* UID effectif du créateur */ gid_t cgid; /* GID effectif du créateur */ unsigned short \fBmode\fP; /* Permissions */ unsigned short __seq; /* Numéro de séquence */ }; .EE .in .PP Les neuf bits de poids faible du champ \fImode\fP de la structure \fIipc_perm\fP définissent les droits d'accès à la file de messages. Les bits de droits sont les suivants\ : .TS l l. 0400 Lisible par l'utilisateur 0200 Droit d'écriture pour l'utilisateur 0040 Lisible par le groupe 0020 Autorisation d'écriture pour le groupe 0004 Lisible par les autres 0002 Écrit par d'autres .TE .PP Les bits 0100, 0010 et 0001 (les bits d'exécution) sont inusités par le système. .PP Les valeurs autorisées pour \fIcmd\fP sont\ : .TP \fBIPC_STAT\fP Copier les informations depuis la structure de données du noyau représentant la file de messages identifiée par \fImsqid\fP dans la structure \fImsqid_ds\fP pointée par \fIbuf\fP. L'appelant doit avoir des privilèges d'accès en lecture sur la file de messages. .TP \fBIPC_SET\fP Écrire les valeurs de certains champs de la structure \fImsqid_ds\fP pointée par \fIbuf\fP dans la structure du noyau représentant la file de messages, en mettant à jour le champ \fImsg_ctime\fP. .IP Les champs suivants de la structure peuvent être mis à jour\ : \fImsg_qbytes\fP, \fImsg_perm.uid\fP, \fImsg_perm.gid\fP et (les neuf bits de poids faible de) \fImsg_perm.mode\fP. .IP L'UID effectif du processus appelant doit être soit celui du propriétaire (\fImsg_perm.uid\fP), soit celui du créateur (\fImsg_perm.cuid\fP) de la file de messages, ou bien l'appelant doit être privilégié. Des privilèges particuliers (sous Linux, la capacité \fBCAP_SYS_RESOURCE\fP) sont nécessaires pour augmenter la valeur de \fImsg_qbytes\fP au\(hydessus de la constante système \fBMSGMNB\fP. .TP \fBIPC_RMID\fP Effacer immédiatement la file de messages, en réveillant tous les processus écrivant et lisant en attente. Ils obtiendront un code d'erreur et \fIerrno\fP aura la valeur \fBEIDRM\fP. Le processus appelant doit avoir les privilèges appropriés ou son UID effectif doit être celui du créateur ou du propriétaire de la file de messages. Le troisième argument de \fBmsgctl\fP() est dans ce cas ignoré. .TP \fBIPC_INFO\fP (spécifique à Linux) Renvoyer des informations sur les limites et paramètres du système relatifs aux files de messages dans la structure pointée par \fIbuf\fP. Cette structure est de type \fImsginfo\fP (ce qui nécessite un transtypage), qui est défini dans \fI\fP si la macro de test de fonctionnalités \fB_GNU_SOURCE\fP est définie\ : .IP .in +4n .EX struct msginfo { int msgpool; /* Taille en kibioctets du tampon utilisé pour stocker les données des messages. Non utilisé par le noyau */ int msgmap; /* Nombre maximal d'entrées dans la table des messages. Non utilisé par le noyau */ int msgmax; /* Nombre maximal d'octets pouvant être écrits dans un seul message */ int msgmnb; /* Nombre maximal d'octets pouvant être écrits dans une file. Utilisé pour initialiser msg_qbytes lors de la création de la file (msgget(2)) */ int msgmni; /* Nombre maximal de files de messages */ int msgssz; /* Taille du segment de message. Non utilisé par le noyau */ int msgtql; /* Nombre maximal de messages dans toutes les files du système. Non utilisé par le noyau */ unsigned short msgseg; /* Nombre maximal de segments. Non utilisé par le noyau */ }; .EE .in .IP Les paramètres \fImsgmni\fP, \fImsgmax\fP et \fImsgmnb\fP peuvent être modifiés à l’aide des fichiers du même nom dans \fI/proc\fP. Consultez \fBproc\fP(5) pour plus de détails. .TP \fBMSG_INFO\fP (spécifique à Linux) Renvoyer une structure \fImsginfo\fP contenant les mêmes informations comme pour \fBIPC_INFO\fP, sauf que les champs suivants contiennent des informations sur les ressources système utilisées par des files de messages\ : le champ \fImsgpool\fP indique le nombre de files de messages existant actuellement sur le système\ ; le champ \fImsgmap\fP contient le nombre total de messages dans l'ensemble des files du système\ ; enfin le champ \fImsgtql\fP contient le nombre total d'octets dans tous les messages de toutes les files du système. .TP \fBMSG_STAT\fP (spécifique à Linux) Renvoyer une structure \fImsqid_ds\fP comme pour \fBIPC_STAT\fP. Cependant, l'argument \fImsqid\fP n'est pas l'identifiant d'une file, mais un index dans le tableau interne au noyau qui contient des informations sur toutes les files de messages du système. .TP \fBMSG_STAT_ANY\fP (spécifique à Linux, depuis Linux 4.17) Renvoyer une structure \fImsqid_ds\fP comme pour \fBMSG_STAT\fP. Cependant, l'accès en lecture \fImsg_perm.mode\fP n'est pas vérifié pour l’accès en lecture de \fImsqid\fP, ce qui veut dire que n'importe quel utilisateur peut utiliser cette opération (tout comme n'importe quel utilisateur peut lire \fI/proc/sysvipc/msg\fP pour avoir les mêmes informations). .SH "VALEUR RENVOYÉE" Si elles réussissent, \fBIPC_STAT\fP, \fBIPC_SET\fP et \fBIPC_RMID\fP renvoient \fB0\fP. Une opération \fBIPC_INFO\fP ou \fBMSG_INFO\fP réussie renvoie le plus grand index d'élément utilisé dans la table interne du noyau contenant des informations sur les files de messages (cette information peut être utilisée par des opérations \fBMSG_STAT\fP ou \fBMSG_STAT_ANY\fP répétées afin d'obtenir des informations sur toutes les files du système). Une opération \fBMSG_STAT\fP ou \fBMSG_STAT_ANY\fP réussie renvoie l'identifiant de la file dont l'index était donné dans \fImsqid\fP. .PP En cas d'erreur \fB\-1\fP est renvoyé, et \fIerrno\fP contient le code d'erreur. .SH ERREURS En cas d'erreur, \fIerrno\fP prend l'une des valeurs suivantes\ : .TP \fBEACCES\fP L'argument \fIcmd\fP équivaut à \fBIPC_STAT\fP ou \fBMSG_STAT\fP, mais le processus appelant n'a pas d'accès en lecture sur la file de messages \fImsqid\fP, et n'a pas la capacité \fBCAP_IPC_OWNER\fP dans l'espace de noms utilisateur qui gère l'espace de noms IPC. .TP \fBEFAULT\fP L'argument \fIcmd\fP a pour valeur \fBIPC_SET\fP ou \fBIPC_STAT\fP, mais l’adresse pointée par \fIbuf\fP est en dehors de l'espace d'adressage accessible. .TP \fBEIDRM\fP La file de messages a été supprimée. .TP \fBEINVAL\fP \fIcmd\fP ou \fImsqid\fP ont une valeur illégale. Ou alors, dans le cas d'une opération \fBMSG_STAT\fP, la valeur d’index indiquée par \fImsqid\fP pointe vers un élément de tableau qui n'est pas en cours d'utilisation. .TP \fBEPERM\fP L'argument \fIcmd\fP a pour valeur \fBIPC_SET\fP ou \fBIPC_RMID\fP, mais l'UID effectif du processus appelant n'est pas le créateur (comme indiqué dans \fImsg_perm.cuid\fP) ou le propriétaire (comme indiqué dans \fImsg_perm.uid\fP) de la file de messages, et l'appelant n'est pas privilégié (sous Linux, il n'a pas la capacité \fBCAP_SYS_ADMIN\fP). .TP \fBEPERM\fP Il a été tenté (via \fBIPC_SET\fP) d'augmenter \fImsg_qbytes\fP au\-delà du paramètre système \fBMSGMNB\fP, mais l'appelant n'est pas privilégié (sous Linux, il n'a pas la capacité \fBCAP_SYS_RESOURCE\fP). .SH CONFORMITÉ .\" SVID does not document the EIDRM error condition. POSIX.1\-2001, POSIX.1\-2008, SVr4. .SH NOTES .\" Like Linux, the FreeBSD man pages still document .\" the inclusion of these header files. L'inclusion de \fI\fP et \fI\fP n'est pas nécessaire sous Linux et n'est exigée par aucune version de POSIX. Cependant, certaines implémentations anciennes nécessitent l'inclusion de ces fichiers d'en\-tête, et le SVID documente aussi leur inclusion. Les applications ayant pour but d'être portables pourraient inclure ces fichiers d'en\-tête. .PP Les opérations \fBIPC_INFO\fP, \fBMSG_STAT\fP et \fBMSG_INFO\fP sont utilisées par le programme \fBipcs\fP(1) pour fournir des informations sur les ressources allouées. À l'avenir, cela pourra être modifié ou remplacé par une interface avec le système de fichiers \fI/proc\fP. .PP Divers champs de la structure \fIstruct msqid_ds\fP étaient de type \fIshort\fP sous Linux\ 2.2 et sont devenus de type \fIlong\fP sous Linux\ 2.4. Pour en profiter, une recompilation avec la glibc\ 2.1.91 ou ultérieure devrait suffire. (Le noyau distingue les appels anciens et nouveaux par un drapeau \fBIPC_64\fP dans \fIcmd\fP.) .SH "VOIR AUSSI" \fBmsgget\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBcapabilities\fP(7), \fBmq_overview\fP(7), \fBsysvipc\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE 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 à .MT debian-l10n-french@lists.debian.org .ME .