shmctl(2) shmctl(2)
NAME
shmctl - Steuerfunktionen für Shared Memory
SYNTAX
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmidds *buf);
BESCHREIBUNG
shmctl() stellt Steuerfunktionen für gemeinsam benutzte Speicherseg-
mente (Shared Memory) zur Verfügung. Folgende mit cmd angegebene Steu-
erfunktionen stehen zur Verfügung:
IPCSTAT Der aktuelle Wert jedes Elements der zu shmid gehörenden
Datenstruktur wird in die Struktur kopiert, auf die buf
zeigt. Der Inhalt dieser Struktur ist in sys/shm.h aufge-
führt.
IPCSET Die nachstehenden Elemente der zu shmid gehörenden Daten-
struktur werden auf die Werte der Struktur gesetzt, auf
die buf zeigt:
shmperm.uid
shmperm.gid
shmperm.mode /* nur Zugangsberechtigungsbits */
Diese Funktion kann nur von einem Prozeß ausgeführt wer-
den, der eine effektive Benutzernummer hat, die gleich
der Nummer des Systemverwalters oder gleich dem Wert von
shmperm.cuid oder shmperm.uid in der zu shmid gehören-
den Datenstruktur ist.
IPCRMID Die durch shmid angegebene Shared-Memory-Kennung, das
Shared-Memory-Segment, sowie die zugehörige Datenstruktur
werden aus dem System entfernt. Diese Funktion kann nur
von einem Prozeß ausgeführt werden, der eine effektive
Benutzernummer hat, die gleich der Nummer des Systemver-
walters oder dem Wert von shmperm.cuid oder shmperm.uid
in der zu shmid gehörenden Datenstruktur ist.
SHMLOCK Das durch shmid angegebene Shared-Memory-Segment im Spei-
cher wird gesperrt. Diese Funktion kann nur von einem
Prozeß ausgeführt werden, der eine effektive Benutzernum-
mer hat, die gleich der Nummer des Systemverwalters ist.
SHMUNLOCK Das durch shmid angegebene Shared-Memory-Segment wird
freigegeben. Diese Funktion kann nur von einem Prozeß
ausgeführt werden, der eine effektive Benutzernummer hat,
die gleich der Nummer des Systemverwalters ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
shmctl(2) shmctl(2)
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
shmctl() ist erfolglos, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
EACCES cmd ist gleich IPCSTAT, und der aufrufende Prozeß hat
keine Lese-Zugriffsberechtigung.
EINVAL shmid ist keine gültige Shared-Memory-Kennung.
EINVAL cmd ist keine gültige Steuerfunktion.
EINVAL cmd ist IPCSET, und shmperm.uid oder shmperm.gid sind
nicht gültig.
EOVERFLOW cmd ist IPCSTAT, wenn uid oder gid zu groß sind, um in
der Struktur gespeichert zu werden, auf die buf zeigt.
EPERM Bei IPCRMID oder IPCSET entspricht die effektive Benut-
zernummer des aufrufenden Prozesses nicht derjenigen des
Systemverwalters, oder sie entspricht nicht dem Wert von
shmperm.cuid oder shmperm.uid in der zu shmid gehören-
den Datenstruktur.
EPERM Bei SHMLOCK oder SHMUNLOCK entspricht die effektive
Benutzernummer des aufrufenden Prozesses nicht derjenigen
des Systemverwalters.
EFAULT buf verweist auf eine unzulässige Adresse.
ENOMEM cmd ist SHMLOCK, und es steht nicht ausreichend Speicher
zur Verfügung.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben, und errno wird zur Anzeige des Fehlers gesetzt.
HINWEISE
Der Benutzer muß Shared-Memory-Segmente ausdrücklich entfernen, nach-
dem der letzte Verweis auf diese entfernt worden ist.
Es kann in Zukunft Änderungen bei den Schnittstellen für Interprozeß-
Kommunikation geben. Sie sollten daher Ihre Anwendungen so gestalten,
daß in Modulen, die shmctl() verwenden, diese Funktion später leicht
durch eine andere ersetzt werden kann.
SIEHE AUCH
shmget(2), shmop(2), shm(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98