BEZEICHNUNG¶
svipc - System-V-Mechanismen für Interprozesskommunikation
ÜBERSICHT¶
#include <sys/msg.h>
#include <sys/sem.h>
#include <sys/shm.h>
BESCHREIBUNG¶
Diese Handbuchseite bezieht sich auf die Linux-Implementierung der
  System-V-Mechanismen für Interprozesskommunikation:
  Nachrichten-Warteschlangen (Message Queues), Sätze von Semaphoren
  (Semaphore Sets) und gemeinsam genutzte Speichersegmente (Shared Memory
  Segments). Im Folgenden bedeutet das Wort 
Ressource eine konkrete
  Umsetzung (Instantiation) eines dieser Mechanismen.
Ressourcen-Zugriffsrechte¶
Für jede Ressource verwaltet das System in einer allgemeinen Struktur des
  Typs 
struct ipc_perm die Informationen, die zur Bestimmung der Rechte
  für eine IPC-Operation notwendig sind. Die Struktur 
ipc_perm
  enthält die folgenden Elemente:
struct ipc_perm {
    uid_t          cuid;   /* Benutzer-ID des Urhebers */
    gid_t          cgid;   /* Gruppen-ID des Urhebers */
    uid_t          uid;    /* Benutzer-ID des Berechtigten */
    gid_t          gid;    /* Gruppen-ID des Berechtigten */
    unsigned short mode;   /* Lese- und Schreibrechte */
};
Die 9 niedrigstwertigen Bits des Elements 
mode der Struktur
  
ipc_perm legen die Zugriffsrechte auf die Ressource für Prozesse
  fest, die einen IPC-Systemaufruf ausführen. Die Rechte werden wie folgt
  interpretiert:
 
    0400    Eigentümer darf lesen
    0200    Eigentümer darf schreiben
 
    0040    Gruppe darf lesen
    0020    Gruppe darf schreiben
 
    0004    Andere dürfen lesen
    0002    Andere dürfen schreiben
Die Bits 0100, 0010 und 0001 (die Ausführungsbits) werden nicht vom System
  benutzt. Darüber hinaus bedeutet »schreiben« für
  Sätze von Semaphoren tatsächlich »verändern«.
Dieselbe System-Header-Datei definiert auch die folgenden symbolischen
  Konstanten:
  - IPC_CREAT
 
  - Eintrag erzeugen, wenn Schlüssel nicht vorhanden.
 
  - IPC_EXCL
 
  - Misserfolg, wenn Schlüssel vorhanden.
 
  - IPC_NOWAIT
 
  - Fehler, wenn die Anforderung warten muss.
 
  - IPC_PRIVATE
 
  - privater Schlüssel
 
  - IPC_RMID
 
  - Ressource entfernen
 
  - IPC_SET
 
  - Optionen für Ressourcen setzen
 
  - IPC_STAT
 
  - Optionen für Ressourcen feststellen
 
Beachten Sie, dass 
IPC_PRIVATE vom Typ 
key_t ist. Alle anderen
  symbolischen Konstanten sind Felder von Schaltern (Flags), für die eine
  ODER-Verknüpfung mit einer 
int-Variablen als Ergebnis möglich
  ist.
Nachrichten-Warteschlangen (Message Queues)¶
Eine Nachrichten-Warteschlange (im Folgenden kurz Queue) wird eindeutig
  über ihre 
msqid (einen positiven Integer) identifiziert und ist
  mit einer Datenstruktur des Typs 
struct msquid_ds verbunden. Die
  Struktur wird in 
<sys/msg.h> definiert und besteht aus den
  folgenden Elementen:
struct msqid_ds {
    struct ipc_perm msg_perm;
    msgqnum_t       msg_qnum;    /* Anzahl der Nachrichten in */
                                 /* der Queue */
    msglen_t        msg_qbytes;  /* maximale Nachrichtenlänge */
                                 /* für die Queue */
    pid_t           msg_lspid;   /* PID des letzten Aufrufs von */
                                 /* msgsnd(2) */
    pid_t           msg_lrpid;   /* PID des letzten Aufrufs von */
                                 /* msgrcv(2)-Aufrufs */
    time_t          msg_stime;   /* Zeitpunkt des letzten
                                 /* msgsnd(2)-Aufrufs */
    time_t          msg_rtime;   /* Zeitpunkt des letzten
                                 /* msgrcv(2)-Aufrufs */
    time_t          msg_ctime;   /* Zeitpunkt der letzten */
                                 /* Änderung */
};
  - msg_perm
 
  - Die Struktur ipc_perm legt die Zugriffsrechte auf
      die Queue fest.
 
  - msg_qnum
 
  - aktuelle Anzahl der Nachrichten in der Queue
 
  - msg_qbytes
 
  - größte erlaubte Nachrichtenlänge in Byte
      für die Queue
 
  - msg_lspid
 
  - ID des Prozesses, der als letzter msgsnd(2)
      aufgerufen hat.
 
  - msg_lrpid
 
  - ID des Prozesses, der als letzter msgrcv(2)
      aufgerufen hat.
 
  - msg_stime
 
  - Zeitpunkt des letzten Aufrufs von msgsnd(2)
 
  - msg_rtime
 
  - Zeitpunkt des letzten Aufrufs von msgcv(2)
 
  - msg_ctime
 
  - Zeitpunkt des letzten Systemaufrufs, bei dem ein Element
      von msqid_ds geändert wurde.
 
Sätze von Semaphoren (Semaphore Sets)¶
Ein Satz von Semaphoren wird eindeutig durch seine 
semid (einen positiven
  Integer) identifiziert und ist mit einer Datenstruktur des Typs 
struct
  semid_ds verbunden. Die Struktur wird in 
<sys/sem.h>
  definiert und enthält die folgenden Elemente:
struct semid_ds {
    struct ipc_perm sem_perm;
    time_t          sem_otime; /* Zeitpunkt des letzten Aufrufs */
                               /* von semop */
    time_t          sem_ctime; /* Zeitpunkt des letzten Aufrufs */
                               /* von semctl */
    unsigned long   sem_nsems; /* Anzahl der Semaphoren im Satz */
};
  - sem_perm
 
  - Die Struktur ipc_perm legt die die Zugriffsrechte
      für den Semaphoren-Satz fest.
 
  - sem_otime
 
  - Zeitpunkt des letzten Aufrufs von semop(2)
 
  - sem_ctime
 
  - Zeitpunkt des letzten Aufrufs von semctl(2), der
      einen Eintrag der oben genannten Struktur oder einen zum Satz
      gehörenden Semaphor geändert hat.
 
  - sem_nsems
 
  - Anzahl der Semaphoren im Satz. Jeder Semaphor des Satzes
      wird repräsentiert durch einen nicht negativen Integerwert zwischen
      0 und sem_nsems-1.
 
Ein Semaphor ist eine Datenstruktur des Typs 
struct sem mit folgenden
  Elementen:
struct sem {
    int semval;  /* Wert des Semaphors */
    int sempid;  /* PID der letzten Semaphorenoperation */
};
  - semval
 
  - Wert des Semaphors: eine nicht negative ganze Zahl
      (nonnegative integer)
 
  - sempid
 
  - ID des letzten Prozesses, der auf diesem Semaphor eine
      Semaphorenoperation ausführte.
 
Gemeinsame Speichersegmente¶
Ein gemeinsames Speichersegment wird eindeutig durch seine 
shmid (einen
  positiven Integer) identifiziert und ist mit einer Datenstruktur des Typs
  
struct shmid_ds verbunden. Die Struktur wird in
  
<sys/shm.h> definiert und enthält die folgenden Elemente:
struct shmid_ds {
    struct ipc_perm shm_perm;
    size_t          shm_segsz;   /* Segmentgröße */
    pid_t           shm_cpid;    /* PID des Erzeugers */
    pid_t           shm_lpid;    /* PID der letzten Operation */
    shmatt_t        shm_nattch;  /* Anzahl der zugreifenden */
                                 /* Prozesse */
    time_t          shm_atime;   /* Zeitpunkt der letzten */
                                 /* Ankopplung */
    time_t          shm_dtime;   /* Zeitpunkt der letzten */
                                 /* Trennung */
    time_t          shm_ctime;   /* Zeitpunkt der letzten */
                                 /* Änderung */
};
  - shm_perm
 
  - Struktur des Typs ipc_perm für die Festlegung
      der Zugriffsrechte auf das gemeinsame Speichersegment.
 
  - shm_segsz
 
  - Größe des gemeinsamen Speichersegments in
    Byte
 
  - shm_cpid
 
  - ID des Prozesses, der das gemeinsame Speichersegment
      eingerichtet hat.
 
  - shm_lpid
 
  - ID des letzten Prozesses, der shmat(2) oder
      shmdt(2) aufgerufen hat.
 
  - shm_nattch
 
  - Anzahl von Prozessen (Attaches), die derzeit mit diesem
      gemeinsamen Speichersegment arbeiten.
 
  - shm_atime
 
  - Zeitpunkt des letzten Aufrufs von shmat(2)
 
  - shm_dtime
 
  - Zeitpunkt des letzten Aufrufs von shmdt(2)
 
  - shm_ctime
 
  - Zeitpunkt des letzten Aufrufs von shmctl(2), der
      shmid_ds verändert hat.
 
SIEHE AUCH¶
ipc(2), 
msgctl(2), 
msgget(2), 
msgrcv(2),
  
msgsnd(2), 
semctl(2), 
semget(2), 
semop(2),
  
shmat(2), 
shmctl(2), 
shmdt(2), 
shmget(2),
  
ftok(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
  
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
  gemeldet werden können, finden sich unter
  
http://www.kernel.org/doc/man-pages/.
 
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Mike Fengler
  <mike@krt3.krt-soft.de> und Martin Eberhard Schauer
  <Martin.E.Schauer@gmx.de> erstellt.
 
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
  License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
  KEINE HAFTUNG übernommen.
 
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
  Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.