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 орнатылады.