De functie msgrcv zal mislukken als: [E2BIG] De waarde van mtext groter is dan msgsz en (msgflg & MSG_NOERROR) 0 is. [EACCES]
Blokkt Msgrcv?
De functies msgsnd en msgrcv kunnen worden uitgevoerd als ofwel blokkerende ofwel niet-blokkerende operaties. Niet-blokkerende bewerkingen maken asynchrone berichtoverdracht mogelijk -- het proces wordt niet onderbroken als gevolg van het verzenden of ontvangen van een bericht.
Verwijdert msgrcv het bericht uit de wachtrij?
De msgrcv-systeemaanroep verwijdert een bericht uit de wachtrij gespecificeerd door msqid en plaatst het in de buffer waarnaar wordt verwezen door msgp. Het argument msgsz specificeert de maximale grootte in bytes voor het lid mtext van de structuur waarnaar wordt verwezen door het argument msgp.
Hoe werkt msgrcv?
De msgrcv-functie leest een bericht uit de berichtenwachtrij gespecificeerd door de msqid-parameter en plaatst het in de door de gebruiker gedefinieerde buffer waarnaar wordt verwezen door de msgp-parameter. De parameter msgp verwijst naar een door de gebruiker gedefinieerde buffer die het volgende moet bevatten: Een veld van het type long int dat het type bericht specificeert.
Wat levert msgrcv op?
RETURN VALUE
Na succesvolle voltooiing geeft msgrcv een waarde terug die gelijk is aan het aantal bytes dat werkelijk in de buffer mtext is geplaatst. Anders wordt er geen bericht ontvangen, msgrcv retourneert (ssize_t)-1 en errno wordt ingesteld om de fout aan te geven.