Funkce msgrcv selže, pokud: [E2BIG] Hodnota mtext je větší než msgsz a (msgflg & MSG_NOERROR) je 0. [EACCES
Blokuje Msgrcv?
Funkce msgsnd a msgrcv lze provádět buď jako blokující nebo neblokující operace. Neblokující operace umožňují asynchronní přenos zpráv – proces není pozastaven v důsledku odeslání nebo přijetí zprávy.
Odstraní msgrcv zprávu z fronty?
Systémové volání msgrcv odstraní zprávu z fronty určené msqid a umístí ji do vyrovnávací paměti, na kterou ukazuje msgp. Argument msgsz určuje maximální velikost v bajtech pro člen mtext struktury, na kterou odkazuje argument msgp.
Jak funguje msgrcv?
Funkce msgrcv čte zprávu z fronty zpráv zadané parametrem msqid a umístí ji do uživatelem definovaného bufferu, na který ukazuje parametr msgp. Parametr msgp ukazuje na uživatelsky definovanou vyrovnávací paměť, která musí obsahovat následující: Pole typu long int, které určuje typ zprávy.
Co vrací msgrcv?
RETURN VALUE
Po úspěšném dokončení vrátí msgrcv hodnotu rovnající se počtu bajtů skutečně umístěných do vyrovnávací paměti mtext. V opačném případě nebude přijata žádná zpráva, msgrcv se vrátí (ssize_t)-1 a bude nastaveno errno, které označuje chybu.