Функцията msgrcv ще се провали, ако: [E2BIG] Стойността на mtext е по-голяма от msgsz и (msgflg & MSG_NOERROR) е 0. [EACCES]
Msgrcv блокира ли?
Функциите msgsnd и msgrcv могат да се изпълняват като блокиращи или неблокиращи операции. Неблокиращите операции позволяват асинхронен трансфер на съобщения - процесът не е спрян в резултат на изпращане или получаване на съобщение.
msgrcv премахва ли съобщението от опашката?
Системното извикване msgrcv премахва съобщение от опашката, посочена от msqid и го поставя в буфера, посочен от msgp. Аргументът msgsz определя максималния размер в байтове за члена mtext на структурата, посочен от аргумента msgp.
Как работи msgrcv?
Функцията msgrcv чете съобщение от опашката със съобщения, определена от параметъра msqid и го поставя в потребителски дефинирания буфер, посочен от параметъра msgp. Параметърът msgp сочи към дефиниран от потребителя буфер, който трябва да съдържа следното: Поле от тип long int, което определя типа на съобщението.
Какво връща msgrcv?
ВРЪЩАНЕ НА СТОЙНОСТ
При успешно завършване, msgrcv връща стойност, равна на броя байтове, действително поставени в буфера mtext. В противен случай няма да бъде получено съобщение, msgrcv ще върне (size_t)-1 и errno ще бъде настроен да указва грешката.