La structure suivante est un modèle pour les messages :
struct msgbuf {
long mtype; /* type du message */
char mtext[1]; /* texte du message */
};
par exemple :
struct msg_buffer {
long toto; /* type */
float a;
char m[7];
};
Attention on ne peut pas échanger des adresses, en effet les adresses virtuelles utilisées
par les différents programmes qui échangent des messages sont à priori différentes,
de plus les zones de mémoire manipulables par deux processus sont disjointes.
Important : le premier champ doit être un entier long qui contiendra le type du message. On trouvera d'autres structures dans le fichier sys/msg.h, mais elle ne sont pas utilisées par les applications utilisateur.
Par exemple, la structure de file de message :
struct __msg {
struct __msg *msg_next;
long msg_type;
unsigned short int msg_ts; /* taille du texte */
long msg_spot; /* "adresse" du texte */
};
ou la structure msginfo utilisé par le noyau.