Next: La primitive de contrôle
Up: Les files de messages
Previous: L'envoi de message
#include <sys/msg.h>
int msgrcv(int dipc, void *p_msg, int taille, long type, int options);
est une demande de lecture dans la file dipc d'un message de longueur inférieure ou égale à taille, qui sera copié dans la zone pointée par p_msg.
options est une combinaison des constantes:
- IPC_NOWAIT
- si la file est vide, le message est non-bloquant.
- MSG_NOERROR
- si le texte du message à extraire est de longueur supérieure à taille, alors le message est extrait tronqué sans signaler d'erreur.
Le paramètre type permet de spécifier le type du message à extraire:
- si type > 0, le plus vieux message de ce type est extrait;
- si type == 0, le plus vieux message est extrait;
- si type < 0, le message le plus vieux du type le plus petit, mais inférieur ou égal à | type |, est extrait.
Ceci permet de définir des priorités entre les messages.
Dans tous les cas, l'appel est bloquant si il n'y a pas de message du type voulu en attente.
Les causes d'échec :
- EINVAL
- file inexistante
- EINVAL
- taille négative
- E2BIG
- taille message > taille, et pas de MSG_NOERROR
- ENOMSG
- pas de message et IPC_NOWAIT
et les mêmes codes d'interruptions que msgsnd.
Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci