La fonction msgrcv échouera si: [E2BIG] La valeur de mtext est supérieure à msgsz et (msgflg & MSG_NOERROR) est 0. [EACCÈS]
Msgrcv bloque-t-il ?
Les fonctions msgsnd et msgrcv peuvent être exécutées comme des opérations bloquantes ou non bloquantes. Les opérations non bloquantes permettent le transfert de messages asynchrones -- le processus n'est pas suspendu à la suite de l'envoi ou de la réception d'un message.
Est-ce que msgrcv supprime le message de la file d'attente ?
L'appel système msgrcv supprime un message de la file d'attente spécifiée par msqid et le place dans le tampon pointé par msgp. L'argument msgsz spécifie la taille maximale en octets pour le membre mtext de la structure pointée par l'argument msgp.
Comment fonctionne msgrcv ?
La fonction msgrcv lit un message de la file d'attente de messages spécifiée par le paramètre msqid et le place dans le tampon défini par l'utilisateur pointé par le paramètre msgp. Le paramètre msgp pointe vers un tampon défini par l'utilisateur qui doit contenir les éléments suivants: Un champ de type long int qui spécifie le type du message.
Que renvoie msgrcv ?
RETURN VALUE
En cas de réussite, msgrcv renvoie une valeur égale au nombre d'octets réellement placés dans le tampon mtext. Sinon, aucun message ne sera reçu, msgrcv renverra (ssize_t)-1 et errno sera défini pour indiquer l'erreur.