Next: Semaphoren
Up: Interprozesskommunikation
Previous: Named Pipes
  Contents
Eine der wichtigsten Varianten von Unix (neben BSD), das System V,
definierte einige der klassischen Mittel der Interprozesskommunikation:
Semaphore, Messagequeue und Shared Memory. Obwohl nicht im POSIX Standard
enthalten, unterstützt Linux diese auch. Allen dreien ist gemeinsam,
dass sie die Struktur kern_ipc_perm enthalten, in der die
Zugriffsrechte auf das IPC Objekt verwaltet.
-
- struct kern_ipc_perm {
key_t key; /* Schlüssel */
uid_t uid; /* UID Eigentümer */
gid_t gid; /* GID Eigentümer */
uid_t cuid; /* UID Erzeuger */
gid_t cgid; /* GID Erzeuger */
mode_t mode; /* Zugriffsmodus */
unsigned long seq; /* Sequenznummer */
};
key ist eine einfache Nummer, die dynamisch beim Erstellen
des IPC Objekts erzeugt wird und das IPC Objekt eindeutig referenziert.
Die Sequenznummer wird zur Bestimmung der Objekt ID (s.u.) aus dem
key verwendet.
Von Bedeutung ist unter Linux weiterhin der Systemaufruf
-
- int ipc(unsigned int call, int first, int second, int third, void *ptr, long fifth)
Dieser ist dafür zuständig die IPC Funktionen (angegeben in call)
in Funktionsaufrufe der jeweiligen Implementierungen im Kernel umzusetzen.
Dies ist jedoch für normale Prozesse nicht sehr elegant und auch nicht
portabel (da Linux-spezifisch). Deshalb benutzt man die jeweiligen
Funktionen der C Bibliothek. Innerhalb des Kernels sind diese dann
durch jeweilige sys_ Aufrufe implementiert.
Subsections
2002-02-17