shmget(2) shmget(2)
NAME
shmget - Kennung für Shared Memory bestimmen
SYNTAX
#include <sys/shm.h>
int shmget(keyt key, sizet size, int shmflg);
BESCHREIBUNG
shmget() gibt die Shared-Memory-Kennung zurück, die key zugeordnet
ist.
Eine Shared-Memory-Kennung und die zugehörige Datenstruktur sowie das
Shared-Memory-Segment der Größe von wenigstens size Bytes werden für
key erstellt, wenn einer der folgenden Punkte wahr ist:
- key entspricht IPCPRIVATE.
- key ist noch keine Shared-Memory-Kennung zugeordnet, und (shmflg &
IPCCREAT) ist wahr.
Bei der Erstellung wird die Datenstruktur, die der Shared-Memory-
Kennung zugeordnet wird, wie folgt initialisiert:
- shmperm.cuid, shmperm.uid, shmperm.cgid, und shmperm.gid werden
auf die effektive Benutzernummer bzw. die effektive Gruppennummer
des aufrufenden Prozesses gesetzt.
- Die Zugriffsberechtigungsbits von shmperm.mode werden auf die
Zugriffsberechtigungsbits von shmflg gesetzt. shmsegsz wird auf
die Größe size gesetzt.
- shmlpid, shmnattch, shmatime und shmdtime werden auf 0 gesetzt.
- shmctime wird auf die aktuellen Zeit gesetzt.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
shmget() ist erfolglos, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
EINVAL Die Größe size liegt unter dem systembedingten Minimum oder
über dem systembedingten Maximum.
EACCES Eine Shared-Memory-Kennung ist für key vorhanden, jedoch
wird die Zugriffserlaubnis, wie sie von den niederwertigen 9
Bits von shmflg angegeben wird, nicht gewährt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
shmget(2) shmget(2)
EINVAL Eine Shared-Memory-Kennung für key ist vorhanden, jedoch ist
die Größe des zugehörigen Segments kleiner als size und size
ist ungleich Null.
ENOENT Eine Shared-Memory-Kennung für key ist nicht vorhanden, und
(shmflg & IPCCREAT) ist unwahr.
ENOSPC Eine Shared-Memory-Kennung soll erstellt werden, jedoch
würde die systembedingte maximale Anzahl zugelassener
Shared-Memory-Kennungen im gesamten System überschritten
werden.
ENOMEM Eine Shared-Memory-Kennung und das zugehörige Speicherseg-
ment sollen erstellt werden, jedoch steht zur Erfüllung der
Anforderung kein ausreichender Speicherplatz zur Verfügung.
EEXIST Eine Shared-Memory-Kennung ist für key vorhanden, jedoch
sind (shmflg & IPCCREAT) und (shmflg & IPCEXCL) wahr.
ERGEBNIS
Nach erfolgreicher Beendigung wird eine nichtnegative ganze Zahl, eine
Shared-Memory-Kennung, zurückgegeben. Andernfalls wird -1 zurückgege-
ben, 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 shmget() verwenden, diese Funktion später leicht
durch eine andere ersetzt werden kann.
SIEHE AUCH
shmctl(2), shmop(2), stdipc(3C), shm(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98