Хэрэв дараах тохиолдолд msgrcv функц амжилтгүй болно: [E2BIG] Mtext-ийн утга msgsz-ээс их бол (msgflg & MSG_NOERROR) 0. [EACCES]
Msgrcv блоклодог уу?
msgsnd болон msgrcv функцийг блоклох болон блоклохгүй үйлдлээр гүйцэтгэх боломжтой. Блоклохгүй үйлдлүүд нь асинхрон мессеж дамжуулах боломжийг олгодог -- мессеж илгээх эсвэл хүлээн авсны үр дүнд процессыг зогсоодоггүй.
msgrcv мессежийг дарааллаас устгадаг уу?
msgrcv системийн дуудлага нь msqid-д заасан дарааллаас мессежийг устгаж, msgp-н заасан буферт байрлуулна. msgsz аргумент нь msgp аргументаар заасан бүтцийн гишүүн mtext-ийн хамгийн их хэмжээг байтаар тодорхойлно.
msgrcv хэрхэн ажилладаг вэ?
Msgrcv функц нь msqid параметрээр заасан мессежийн дарааллаас мессеж уншиж, msgp параметр-аар заагдсан хэрэглэгчийн тодорхойлсон буферт байрлуулна. msgp параметр нь дараахыг агуулсан байх ёстой хэрэглэгчийн тодорхойлсон буфер руу чиглэнэ: Мессежийн төрлийг зааж өгдөг long int төрлийн талбар.
msgrcv юу буцаадаг вэ?
БУЦААХ УТГА
Амжилттай дууссаны дараа msgrcv нь буфер mtext-д бодитоор байрлуулсан байтын тоотой тэнцэх утгыг буцаана. Үгүй бол ямар ч мессеж хүлээн авахгүй, msgrcv (ssize_t)-1 буцаж ирэх ба алдааг зааж өгөхийн тулд errno тохируулна.