Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       shmget - ein gemeinsames Speichersegment reservieren

"UBERSICHT

       #include <sys/ipc.h>
       #include <sys/shm.h>

       int shmget(key_t schluessel, size_t groesse, int shmflg);

BESCHREIBUNG

       shmget()  gibt  den Bezeichner des gemeinsamen Speichersegments zuruck,
       der mit dem Wert des Arguments schluessel verknupft ist.  Es  wird  ein
       neues  gemeinsames  Speichersegment  erstellt, dessen GroBe dem auf ein
       Vielfaches von PAGE_SIZE gerundeten Wert von groesse entspricht,  falls
       schluessel  den  Wert  IPC_PRIVATE  hat  oder schluessel nicht den Wert
       IPC_PRIVATE  hat,  kein  gemeinsames  Speichersegment   zu   schluessel
       exisitiert und IPC_CREAT in shmflg angegeben wurde.

       Wenn   shmflg  sowohl  IPC_CREAT  als  auch  IPC_EXCL  angibt  und  ein
       gemeinsames Speichersegment  fur  schluessel  bereits  existiert,  dann
       schlagt  shmget() fehl und errno wird auf EEXIST gesetzt. (Dies ist mit
       dem  Effekt  der  Kombination  von  O_CREAT  |   O_EXCL   fur   open(2)
       vergleichbar.)

       Der Wert shmflg besteht aus:

       IPC_CREAT   um  ein  neues  Segment  zu erstellen. Wenn dieser Schalter
                   nicht benutzt wird, dann wird shmget() das  mit  schluessel
                   verbundene  Segment  suchen und prufen, ob der Benutzer auf
                   das Segment zugreifen darf.

       IPC_EXCL    sorgt im Verbund  mit  IPC_CREAT  fur  eine  Fehlermeldung,
                   falls das Segment bereits existiert.

       mode_flags  (niederwertigste  9  Bits)  geben die Rechte des Besitzers,
                   der Gruppe und dem Rest der Welt an. Diese Bits  haben  das
                   gleiche  Format  und die gleiche Bedeutung wie das Argument
                   mode von  open(2).  Zurzeit  werden  die  Ausfuhrungsrechte
                   nicht vom System benutzt.

       SHM_HUGETLB (seit Linux 2.6)
                   Das Segment unter Benutzung von >>huge pages<< reservieren.
                   Die   Kernel-Quelldatei    Documentation/vm/hugetlbpage.txt
                   enthalt weitere Informationen.

       SHM_NORESERVE (seit Linux 2.6.15)
                   Dieser    Schalter    dient    dem   gleichen   Zweck   wie
                   dermmap(2)-Schalter MAP_NORESERVE. Reservieren  Sie  keinen
                   Auslagerungsspeicher     fur     dieses    Segment.    Wenn
                   Auslagerungsspeicher reserviert ist, ist  es  sicher,  dass
                   das    Segment    verandert    werden   kann.   Wenn   kein
                   Auslagerungsspeicher reserviert ist,  konnte  SIGSEGV  beim
                   Schreiben  empfangen werden, falls kein physischer Speicher
                   verfugbar  ist.  Siehe  auch  die  Diskussion   der   Datei
                   /proc/sys/vm/overcommit_memory in proc(5).

       Wenn  ein  neues  gemeinsames  Speichersegment erstellt wird, wird sein
       Inhalt  mit  Nullwerten  initialisiert   und   die   damit   verbundene
       Datenstruktur shmid_ds (siehe shmctl(2)) wie folgt initialisiert:

              shm_perm.cuid   und   shm_perm.uid   werden  auf  die  effektive
              Benutzer-ID des aufrufenden Prozesses gesetzt.

              shm_perm.cgid  und  shm_perm.gid  werden   auf   die   effektive
              Gruppen-ID des aufrufenden Prozesses gesetzt.

              Die  niederwertigsten  9  Bit  von  shm_perm.mode werden auf die
              niederwertigsten 9 Bit von shmflg gesetzt.

              shm_segsz wird auf den Wert von groesse gesetzt.

              shm_lpid, shm_nattch,  shm_atime  und  shm_dtime  werden  auf  0
              gesetzt.

              shm_ctime wird auf die aktuelle Zeit gesetzt.

       Wenn  das  gemeinsame  Speichersegment  bereits  existiert,  werden die
       Zugriffsrechte uberpruft  und  nachgesehen,  ob  es  fur  die  Freigabe
       markiert wurde.

R"UCKGABEWERT

       Bei  Erfolg wird ein gultiger Segment-Bezeichner, shmid, zuruckgegeben,
       bei Auftreten eines Fehlers -1.

FEHLER

       Bei Auftreten eines Fehlers enthalt errno einen der folgenden Werte:

       EACCES Der  Benutzer  hat  keine  Zugriffsrechte  auf  das   gemeinsame
              Speichersegment und keine CAP_IPC_OWNER-Fahigkeit.

       EEXIST IPC_CREAT | IPC_EXCL wurde angegeben und das Segment existiert.

       EINVAL Es sollte ein neues Segment erstellt werden und groesse < SHMMIN
              oder groesse > SHMMAX oder es sollte kein neues Segment erstellt
              werden,  ein  Segment  mit gegebenem Schlussel exisitierte, aber
              groesse ist groBer als die GroBe dieses Segments.

       ENFILE Die Systembeschrankung fur die Gesamtzahl offener Dateien  wurde
              erreicht.

       ENOENT Fur  den  angegebenen  schluessel  exisitert  kein  Segment  und
              IPC_CREAT wurde nicht angegeben.

       ENOMEM Es konnte kein Speicher fur Segment-Zuschlag reserviert werden.

       ENOSPC Alle  moglichen  gemeinsamen  Speicher-IDs  wurden  in  Anspruch
              genommen  (SHMMNI) oder das Reservieren eines Segments der GroBe
              groesse wurde dazu fuhren, dass die systemweite  Begrenzung  fur
              gemeinsamen Speicher (SHMALL) uberschritten wird.

       EPERM  Der  Schalter  SHM_HUGETLB  wurde  angegeben, der Aufrufende war
              aber   nicht   privilegiert   (hatte   nicht    die    Fahigkeit
              CAP_IPC_LOCK).

KONFORM ZU

       SVr4, POSIX.1-2001.

       SHM_HUGETLB ist eine nicht portierbare Linux-Erweiterung.

ANMERKUNGEN

       IPC_PRIVATE  ist  kein  Schalterfeld,  aber  ein key_t-Typ. Wenn dieser
       spezielle Wert fur schalter verwandt wird, ignoriert  der  Systemaufruf
       alles  bis  auf die niederwertigsten 9 Bit von shmflg und erstellt (bei
       Erfolg) ein neues gemeinsames Speichersegment.

       Es gelten die folgenden Einschrankungen fur die Ressourcen  gemeinsamer
       Speichersegmente, die einen shmget()-Aufruf betreffen:

       SHMALL systemweiter  Maximalwert  fur  gemeinsame  Speicherseiten  (auf
              Linux  kann  diese  Einschrankung  uber  /proc/sys/kernel/shmall
              gelesen und verandert werden).

       SHMMAX MaximalgroBe   eines   gemeinsamen   Speichersegments  in  Byte:
              abhangig vom Regelwerk. (Auf Linux kann diese Einschrankung uber
              /proc/sys/kernel/shmax gelesen und verandert werden.)

       SHMMIN MinimalgroBe   eines   gemeinsamen   Speichersegments  in  Byte:
              abhangig  vom  der  Implementierung  (momentan  1  Byte,  obwohl
              PAGE_SIZE die effektive MinimalgroBe darstellt).

       SHMMNI systemweite  maximale  Anzahl von gemeinsamen Speichersegmenten:
              abhangig von der Implementierung  (derzeit  4096,  war  128  vor
              Linux   2.3.99;   auf   Linux   kann  diese  Einschrankung  uber
              /proc/sys/kernel/shmmni gelesen und verandert werden).

       Die  Implementierung  hat  keine  besonderen  Einschrankungen  fur  die
       maximale Anzahl gemeinsamer Speichersegmente pro Prozess (SHMSEG).

   Linux-Anmerkungen
       Bis  Version  2.3.30  gab  Linux  EIDRM  fur  ein  shmget()  auf  einem
       gemeinsamen Speichersegment zuruck, das zur Loschung vorgesehen war.

FEHLER

       Die Wahl des Namens IPC_PRIVATE  war  vielleicht  unglucklich.  IPC_NEW
       ware fur diese Funktion besser gewesen.

SIEHE AUCH

       shmat(2),     shmctl(2),     shmdt(2),     ftok(3),    capabilities(7),
       shm_overview(7), svipc(7)

KOLOPHON

       Diese  Seite  ist  Teil  der   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

       Die  deutsche  Ubersetzung  dieser  Handbuchseite wurde von Ralf Demmer
       <rdemmer@rdemmer.de> und Chris Leick <c.leick@vollbio.de> erstellt.

       Diese Ubersetzung ist Freie Dokumentation; lesen Sie  die  GNU  General
       Public   License   Version   3  oder  neuer  bezuglich  der  Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

       Wenn  Sie  Fehler  in  der  Ubersetzung  dieser  Handbuchseite  finden,
       schicken     Sie     bitte     eine     E-Mail     an     <debian-l10n-
       german@lists.debian.org>.