Funkcja msgrcv nie powiedzie się, jeśli: [E2BIG] Wartość mtext jest większa niż msgsz i (msgflg & MSG_NOERROR) wynosi 0. [DOSTĘP]
Czy Msgrcv blokuje?
Funkcje msgsnd i msgrcv mogą być wykonywane jako operacje blokujące lub nieblokujące. Operacje nieblokujące pozwalają na asynchroniczny transfer wiadomości – proces nie jest zawieszany w wyniku wysłania lub odebrania wiadomości.
Czy msgrcv usuwa wiadomość z kolejki?
Wywołanie systemowe msgrcv usuwa wiadomość z kolejki określonej przez msqid i umieszcza ją w buforze wskazywanym przez msgp. Argument msgsz określa maksymalny rozmiar w bajtach składowej mtext struktury wskazywanej przez argument msgp.
Jak działa msgrcv?
Funkcja msgrcv odczytuje wiadomość z kolejki wiadomości określonej przez parametr msqid i umieszcza ją w zdefiniowanym przez użytkownika buforze wskazywanym przez parametr msgp. Parametr msgp wskazuje na bufor zdefiniowany przez użytkownika, który musi zawierać następujące elementy: Pole typu long int, które określa typ wiadomości.
Co zwraca msgrcv?
WARTOŚĆ ZWROTNA
Po pomyślnym zakończeniu msgrcv zwraca wartość równą liczbie bajtów faktycznie umieszczonych w mtext bufora. W przeciwnym razie żadna wiadomość nie zostanie odebrana, msgrcv zwróci (ssize_t)-1 i errno zostanie ustawione, aby wskazać błąd.