Msgrcv-funktionen ska misslyckas om: [E2BIG] Värdet på mtext är större än msgsz och (msgflg & MSG_NOERROR) är 0. [EACCES]
Blockerar Msgrcv?
funktionerna msgsnd och msgrcv kan utföras som antingen blockerande eller icke-blockerande operationer. Icke-blockerande operationer tillåter asynkron meddelandeöverföring -- processen avbryts inte som ett resultat av att ett meddelande skickas eller tas emot.
Tar msgrcv bort meddelandet från kön?
msgrcv-systemanropet tar bort ett meddelande från kön som anges av msqid och placerar det i bufferten som msgp pekar på. Argumentet msgsz anger den maximala storleken i byte för medlemmen mtext i strukturen som pekas på av msgp-argumentet.
Hur fungerar msgrcv?
Msgrcv-funktionen läser ett meddelande från meddelandekön som anges av parametern msqid och placerar det i den användardefinierade bufferten som pekas på av msgp-parametern. Parametern msgp pekar på en användardefinierad buffert som måste innehålla följande: Ett fält av typen long int som anger typen av meddelande.
Vad returnerar msgrcv?
RETURN VALUE
När msgrcv har slutförts returnerar ett värde lika med antalet byte som faktiskt placerats i bufferten mtext. Annars kommer inget meddelande att tas emot, msgrcv kommer att returnera (ssize_t)-1 och errno kommer att ställas in för att indikera felet.