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.