Die Funktion msgrcv schlägt fehl, wenn: [E2BIG] Der Wert von mtext ist größer als msgsz und (msgflg & MSG_NOERROR) ist 0. [EACCES]
Blockiert Msgrcv?
Die Funktionen msgsnd und msgrcv können als blockierende oder nicht-blockierende Operationen ausgeführt werden. Nicht blockierende Operationen ermöglichen eine asynchrone Nachrichtenübertragung – der Prozess wird nicht unterbrochen, wenn eine Nachricht gesendet oder empfangen wird.
Entfernt msgrcv die Nachricht aus der Warteschlange?
Der Systemaufruf msgrcv entfernt eine Nachricht aus der durch msqid angegebenen Warteschlange und platziert sie in dem Puffer, auf den msgp zeigt. Das Argument msgsz gibt die maximale Größe in Bytes für das Element mtext der Struktur an, auf die das Argument msgp zeigt.
Wie funktioniert msgrcv?
Die Funktion msgrcv liest eine Nachricht aus der Nachrichtenwarteschlange, die durch den Parameter msqid angegeben ist, und platziert sie in dem benutzerdefinierten Puffer, auf den der Parameter msgp zeigt. Der Parameter msgp zeigt auf einen benutzerdefinierten Puffer, der Folgendes enth alten muss: Ein Feld vom Typ long int, das den Typ der Nachricht angibt.
Was gibt msgrcv zurück?
RETURN VALUE
Bei erfolgreichem Abschluss gibt msgrcv einen Wert zurück, der der Anzahl der Bytes entspricht, die tatsächlich in den Puffer mtext gestellt werden. Andernfalls wird keine Nachricht empfangen, msgrcv gibt (ssize_t)-1 zurück und errno wird gesetzt, um den Fehler anzuzeigen.