Msgrcv хэзээ амжилтгүй болох вэ?

Агуулгын хүснэгт:

Msgrcv хэзээ амжилтгүй болох вэ?
Msgrcv хэзээ амжилтгүй болох вэ?
Anonim

Хэрэв дараах тохиолдолд 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 тохируулна.

Зөвлөмж болгож буй: