msgctl(2) msgctl(2)
NAME
msgctl - Steuerfunktionen für Nachrichten liefern
SYNTAX
#include <sys/msg.h>
int msgctl(int msqid, int cmd, ... struct msqidds *buf );
BESCHREIBUNG
msgctl() liefert Steuerfunktionen für Nachrichten, die durch cmd ange-
geben werden. Folgende cmd-Steuerfunktionen stehen zur Verfügung:
IPCSTAT schreibt den aktuellen Wert jedes Elements der zu msqid
gehörenden Datenstruktur in die Struktur, auf die buf zeigt.
Der Inhalt dieser Struktur ist bei den Begriffserklärungen
in der Einführung zu den Funktionsbeschreibungen definiert.
IPCSET setzt den Wert der nachstehenden Elemente der zu msqid gehö-
renden Datenstruktur auf den entsprechenden Wert aus der
Struktur, auf die buf zeigt:
msgperm.uid
msgperm.gid
msgperm.mode /* nur niederwertige 9 Bits */
msgqbytes
Diese Funktion kann nur von einem Prozeß ausgeführt werden,
der die effektive Benutzernummer des Systemverwalters hat
oder den Wert von msgperm.cuid oder msgperm.uid der zu
msqid gehörenden Datenstruktur hat. Der Wert von msgqbytes
kann nur vom Systemverwalter erhöht werden.
IPCRMID löscht die in msqid angegebene Kennung der Nachrichten-War-
teschlange im System und entfernt die zugehörige Nachrich-
ten-Warteschlange und Datenstruktur. Diese Funktion kann nur
von einem Prozeß ausgeführt werden, der die effektive Benut-
zernummer des Systemverwalters hat oder den Wert von
msgperm.cuid oder msgperm.uid in der zu msqid gehörenden
Datenstruktur hat.
msgctl() ist erfolglos, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
EACCES Bei IPCSTAT wird dem aufrufenden Prozeß die Erlaubnis ver-
weigert.
EFAULT buf weist auf eine unzulässige Adresse.
EINVAL msqid ist keine gültige Kennung einer Nachrichten-Warte-
schlange.
EINVAL cmd ist keine gültige Steuerfunktion.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
msgctl(2) msgctl(2)
EINVAL cmd ist IPCSET und msgperm.uid oder msgperm.gid ist
ungültig.
EOVERFLOW cmd ist IPCSTAT und uid oder gid ist zu groß, um in der
Struktur gespeichert zu werden, auf die buf weist.
EPERM cmd ist gleich IPCRMID oder IPCSET. Die effektive Benut-
zernummer des aufrufenden Prozesses ist nicht gleich der
Nummer des Systemverwalters oder dem Wert von msgperm.cuid
oder msgperm.uid in der zu msqid gehörenden Datenstruktur.
EPERM cmd ist gleich IPCSET, ein Versuch zur Erhöhung des Wertes
von msgqbytes wird vorgenommen, und die effektive Benut-
zernummer des aufrufenden Prozesses ist nicht gleich der
Nummer des Systemverwalters.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben, und errno wird zur Anzeige des Fehlers gesetzt.
SIEHE AUCH
msgget(2), msgop(2).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98