Msgrcv funksiyasi quyidagi hollarda ishlamay qoladi: [E2BIG] Mtext qiymati msgsz dan katta bo'lsa va (msgflg & MSG_NOERROR) 0 bo'lsa. [EACCES]
Msgrcv bloklanadimi?
msgsnd va msgrcv funksiyalari bloklash yoki bloklanmaslik operatsiyalari sifatida bajarilishi mumkin. Bloklanmagan operatsiyalar asinxron xabar uzatish imkonini beradi -- xabar yuborish yoki qabul qilish natijasida jarayon to'xtatilmaydi.
msgrcv xabarni navbatdan olib tashlaydimi?
msgrcv tizim chaqiruvi xabarni msqid tomonidan belgilangan navbatdan olib tashlaydi va uni msgp tomonidan koʻrsatilgan buferga joylashtiradi. msgsz argumenti msgp argumenti koʻrsatgan strukturaning aʼzo mtexti uchun baytlardagi maksimal hajmni belgilaydi.
Msgrcv qanday ishlaydi?
Msgrcv funksiyasi xabarni msqid parametri tomonidan belgilangan xabarlar qatoridan o'qiydi va uni msgp parametri tomonidan ko'rsatilgan foydalanuvchi tomonidan belgilangan buferga joylashtiradi. msgp parametri quyidagini o'z ichiga olishi kerak bo'lgan foydalanuvchi tomonidan belgilangan buferga ishora qiladi: Xabar turini belgilaydigan long int tipidagi maydon.
Msgrcv nima qaytaradi?
QAYTISH QIYMATI
Muvaffaqiyatli yakunlangach, msgrcv mtext buferiga haqiqiy joylashtirilgan baytlar soniga teng qiymatni qaytaradi. Aks holda, hech qanday xabar olinmaydi, msgrcv (ssize_t)-1 qaytariladi va xatoni bildirish uchun errno oʻrnatiladi.