Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
msgctl - Controler les messages
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
DESCRIPTION
Cette fonction permet d'effectuer l'operation indiquee par cmd sur la
file de messages ayant l'identifiant msqid.
La structure msqid_ds est declaree dans <sys/msg.h> comme suit :
struct msqid_ds {
struct ipc_perm msg_perm; /* Proprietaire et permissions */
time_t msg_stime; /* Heure du dernier msgsnd(2) */
time_t msg_rtime; /* Heure du dernier msgrcv(2) */
time_t msg_ctime; /* Heure de derniere modification */
unsigned long __msg_cbytes; /* Nombre actuel d'octets dans la file
(non standard) */
msgqnum_t msg_qnum; /* Nombre actuel de messages
dans la file */
msglen_t msg_qbytes; /* Nombre maximal d'octets
autorises dans la file */
pid_t msg_lspid; /* PID du dernier msgsnd(2) */
pid_t msg_lrpid; /* PID du dernier msgrcv(2) */
};
La structure ipc_perm est definie dans <sys/ipc.h> de la facon suivante
(les champs en gras peuvent etre modifies en utilisant IPC_SET) :
struct ipc_perm {
key_t __key; /* Cle fournie a msgget(2) */
uid_t uid; /* UID effectif du proprietaire */
gid_t gid; /* GID effectif du proprietaire */
uid_t cuid; /* UID effectif du createur */
gid_t cgid; /* GID effectif du createur */
unsigned short mode; /* Permissions */
unsigned short __seq; /* Numero de sequence */
};
Les valeurs autorisees pour cmd sont :
IPC_STAT
Copier les informations depuis la structure representant la file
de messages identifiee par msqid dans la structure msqid_ds
pointee par buf. L'appelant doit avoir des privileges d'acces en
lecture sur la file de messages.
IPC_SET
Ecrire la valeur de certains champs de la structure msqid_ds
pointee par buf dans la structure du noyau representant la file
de messages, en mettant a jour le champ msg_ctime. Les champs
suivants de la structure peuvent etre mis a jour : msg_qbytes,
msg_perm.uid, msg_perm.gid et les 9 bits de poids faible de
msg_perm.mode. L'UID effectif du processus appelant doit etre
soit celui du proprietaire (msg_perm.uid), soit celui du
createur (msg_perm.cuid) de la file de messages, ou bien
l'appelant doit etre privilegie. Des privileges particuliers
(sous Linux, la capacite CAP_IPC_RESOURCE) sont necessaires pour
augmenter la valeur de msg_qbytes au-dessus de la constante
systeme MSGMNB.
IPC_RMID
Effacer immediatement la file de messages et ses structures de
donnees, en reveillant tous les processus ecrivains et lecteurs
en attente. Ils obtiendront un code d'erreur, et errno aura la
valeur EIDRM. L'UID effectif du processus appelant doit etre
celui du createur ou du proprietaire de la file de messages, ou
bien le processus appelant doit etre privilegie.
IPC_INFO (specifique a Linux)
Renvoie des informations sur les limites et parametres du
systeme relatifs aux files de messages dans la structure pointee
par buf. Cette structure est de type msginfo (ce qui necessite
un transtypage), qui est defini dans <sys/msg.h> si la macro
_GNU_SOURCE est definie :
struct msginfo {
int msgpool; /* Taille en kibi-octets du tampon utilise
pour stocker les donnees des messages ;
pas utilise par le noyau */
int msgmap; /* Nombre maximal d'entrees dans la table
des messages ; pas utilise par le noyau */
int msgmax; /* Nombre maximal d'octets pouvant etre
ecrits dans un seul message */
int msgmnb; /* Nombre maximal d'octets pouvant etre ecrits dans
une file ; utilise pour initialiser msg_qbytes
lors de la creation de la file (msgget(2)) */
int msgmni; /* Nombre maximal de files de message */
int msgssz; /* Taille du segment de message ;
pas utilise par le noyau */
int msgtql; /* Nombre maximal de messages dans toutes les files
du systeme ; pas utilise par le noyau */
unsigned short int msgseg;
/* Nombre maximal de segments ;
pas utilise par le noyau */
};
Les parametres msgmni, msgmax et msgmnb peuvent etre modifies
via les fichiers du meme nom dans /proc. Consultez proc(5) pour
plus de details.
MSG_INFO (Specifique a Linux)
Renvoie une structure msginfo contenant les memes informations
que pour IPC_INFO, sauf que les champs suivants contiennent des
informations sur les ressources systeme utilisees par des files
de messages : le champ msgpool indique le nombre de files de
messages existant actuellement sur le systeme ; le champ msgmap
contient le nombre total de messages dans l'ensemble des files
du systeme ; enfin le champ msgtql contient le nombre total
d'octets dans tous les messages de toutes les files du systeme.
MSG_STAT (Specifique a Linux)
Renvoie une structure msqid_ds comme pour IPC_STAT. Cependant,
l'argument msqid n'est pas l'identifiant d'une file, mais un
indice dans le tableau interne au noyau qui contient des
informations sur toutes les files de messages du systeme.
VALEUR RENVOY'EE
Si elles reussissent, les operations IPC_STAT, IPC_SET et IPC_RMID
renvoient 0. Une operation IPC_INFO ou MSG_INFO reussie renvoie le plus
grand indice d'un element utilise dans la table interne du noyau
contenant des informations sur les files de messages. Cette information
peut etre utilisee par des operations MSG_STAT repetees afin d'obtenir
des informations sur toutes les files du systeme. Une operation
MSG_STAT reussie renvoie l'identifiant de la file dont l'indice etait
donne dans msqid.
En cas d'erreur -1 est renvoye, et errno contient le code d'erreur.
ERREURS
En cas d'erreur, errno prend l'une des valeurs suivantes :
EACCES L'argument cmd reclame l'operation IPC_STAT ou MSG_STAT, mais le
processus appelant n'a pas d'acces en lecture sur la file de
messages msqid, et n'a pas la capacite CAP_IPC_OWNER.
EFAULT L'argument cmd reclame l'operation IPC_SET ou IPC_STAT mais buf
pointe en dehors de l'espace d'adressage accessible.
EIDRM La file de messages a ete supprimee.
EINVAL cmd ou msqid ont une valeur illegale. Ou alors, dans le cas
d'une operation MSG_STAT, la valeur indiquee par msqid pointe
vers un element de tableau qui n'est pas en cours d'utilisation.
EPERM L'argument cmd reclame l'operation IPC_SET ou IPC_RMID mais
l'UID effectif du processus appelant n'est pas le createur
(comme indique dans msg_perm.cuid) ou le proprietaire (comme
indique dans msg_perm.uid) de la file de messages, et le
processus n'est pas privilegie (sous Linux, il n'a pas la
capacite CAP_SYS_ADMIN).
CONFORMIT'E
SVr4, POSIX.1-2001.
NOTES
Les appels IPC_INFO, MSG_STAT et MSG_INFO sont utilises par le
programme ipcs(1) pour fournir des informations sur les ressources
allouees. A l'avenir, ceci pourra etre modifie ou remplace par une
interface avec le systeme de fichiers /proc.
Divers champs de la structure struct msqid_ds etaient de type short
sous Linux 2.2 et sont devenus de type long sous Linux 2.4. Pour en
profiter, une recompilation avec la glibc 2.1.91 ou ulterieure devrait
suffire. (Le noyau distingue les appels anciens et nouveaux par un
drapeau IPC_64 dans cmd.)
VOIR AUSSI
msgget(2), msgrcv(2), msgsnd(2), capabilities(7), mq_overview(7),
svipc(7)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 6 aout 2008 MSGCTL(2)