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>.