Funkcija msgrcv nepavyks, jei: [E2BIG] mtext reikšmė yra didesnė nei msgsz ir (msgflg & MSG_NOERROR) yra 0. [EACCES]
Ar Msgrcv blokuoja?
Funkcijos msgsnd ir msgrcv gali būti atliekamos kaip blokuojančios arba neblokuojančios operacijos. Neblokuojančios operacijos leidžia perduoti pranešimus asinchroniškai – procesas nesustabdomas siunčiant ar gavus pranešimą.
Ar msgrcv pašalina pranešimą iš eilės?
msgrcv sistemos iškvietimas pašalina pranešimą iš msqid nurodytos eilės ir įdeda jį į buferį, į kurį nurodo msgp. Argumentas msgsz nurodo maksimalų msgp argumentu nurodytos struktūros nario mteksto dydį baitais.
Kaip veikia msgrcv?
Funkcija msgrcv nuskaito pranešimą iš pranešimų eilės, nurodytos parametru msqid, ir įdeda jį į vartotojo nustatytą buferį, į kurį nurodo parametras msgp. Parametras msgp nurodo vartotojo nustatytą buferį, kuriame turi būti: Long int tipo laukas, nurodantis pranešimo tipą.
Ką grąžina msgrcv?
RETURN VALUE
Sėkmingai užbaigus, msgrcv grąžina reikšmę, lygią baitų skaičiui, faktiškai įdėtam į buferį mtext. Priešingu atveju pranešimas nebus gautas, msgrcv grįš (ssize_t)-1 ir bus nustatyta klaida errno, kad būtų nurodyta klaida.