Structure d'une file de messages
struct msqid_ds {
struct ipc_perm msg_perm; /* permissions IPC */
struct msg *msg_first; /* pointeur sur premier message */
struct msg *msg_last; /* pointeur sur dernier message */
unsigned short msg_cbytes; /* taille de la file en octets */
unsigned short msg_qnum; /* nombre de messages sur la file */
unsigned short msg_qbytes; /* taille max allouée à la file */
unsigned short msg_lspid; /* numero pid du dernier msgsnd */
unsigned short msg_lrpid; /* numero pid du dernier msgrcv */
time_t msg_stime; /* heure du dernier msgsnd */
time_t msg_rtime; /* heure du dernier msgrcv */
time_t msg_ctime; /* heure du dernier msgctl */
} ;
Suite à une création, la structure de données associée msqid_ds est initialisée de la manière suivante :
msg_perm.cuid et msg_perm.uid indiquent l'UID effectif du processus appelant.
msg_perm.cgid et msg_perm.gid indiquent le GID effectif du processus appelant.
Les 9 bits de poids faibles de msgflg sont copiés dans les 9 bits de poids faibles de msg_perm.mode, c'est à dire les modes classiques d'accès aux i-nodes (les rwxrwxrwx que vous avez renseigné lors de l'appel à msgget, sachant que x ne sert à rien).
msg_qnum, msg_lspid, msg_lrpid, msg_stime et msg_rtime sont fixés à 0.
msg_qbytes est rempli avec la limite système MSGMNB.
msg_ctime est renseigné à l'heure actuelle.