msgctl
Contrôler les messages System V
- Provided by: manpages-fr-dev (Version: 3.57d1p1-1)
- Source: manpages-fr
- Report a bug
Contrôler les messages System V
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgctl(int msqid, int cmd, struct msqid_ds *buf);
Cette fonction permet d'effectuer l'opération indiquée par cmd sur la file de messages System V ayant l'identifiant msqid.
La structure msqid_ds est déclarée dans <sys/msg.h> comme suit :
struct msqid_ds {
struct ipc_perm msg_perm; /* Propriétaire 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 dernière 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
autorisés 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 définie de la façon suivante (les champs en gras peuvent être modifiés en utilisant IPC_SET) :
struct ipc_perm {
key_t __key; /* Clé fournie à msgget(2) */
uid_t uid; /* UID effectif du propriétaire */
gid_t gid; /* GID effectif du propriétaire */
uid_t cuid; /* UID effectif du créateur */
gid_t cgid; /* GID effectif du créateur */
unsigned short mode; /* Permissions */
unsigned short __seq; /* Numéro de séquence */
};
Les valeurs autorisées pour cmd sont :
struct msginfo {
int msgpool; /* Taille en kibioctets du tampon utilisé
pour stocker les données des messages ;
pas utilisé par le noyau */
int msgmap; /* Nombre maximal d'entrées dans la table
des messages ; pas 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 message */
int msgssz; /* Taille du segment de message ;
pas utilisé par le noyau */
int msgtql; /* Nombre maximal de messages dans
toutes les files du système ;
pas utilisé par le noyau */
unsigned short int msgseg;
/* Nombre maximal de segments ;
pas utilisé par le noyau */
};
Les paramètres msgmni, msgmax et msgmnb peuvent
être modifiés via les fichiers du même nom dans
/proc. Consultez proc(5) pour plus de détails.Si elles réussissent, les opérations IPC_STAT, IPC_SET et IPC_RMID renvoient 0. Une opération IPC_INFO ou MSG_INFO réussie renvoie le plus grand indice d'un é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 MSG_STAT répétées afin d'obtenir des informations sur toutes les files du système. Une opération MSG_STAT réussie renvoie l'identifiant de la file dont l'indice était donné dans msqid.
En cas d'erreur -1 est renvoyé, et errno contient le code d'erreur.
En cas d'erreur, errno prend l'une des valeurs suivantes :
SVr4, POSIX.1-2001.
L'inclusion de <sys/types.h> et <sys/ipc.h> 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.
Les appels IPC_INFO, MSG_STAT et MSG_INFO sont utilisés par le programme ipcs(1) pour fournir des informations sur les ressources allouées. À l'avenir, ceci pourra être modifié ou remplacé par une interface avec le système de fichiers /proc.
Divers champs de la structure struct msqid_ds étaient 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 ultérieure devrait suffire. (Le noyau distingue les appels anciens et nouveaux par un drapeau IPC_64 dans cmd.)
msgget(2), msgrcv(2), msgsnd(2), capabilities(7), mq_overview(7), svipc(7)
Cette page fait partie de la publication 3.57 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».