1 .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
3 .\" Permission is granted to make and distribute verbatim copies of this
4 .\" manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
7 .\" Permission is granted to copy and distribute modified versions of this
8 .\" manual under the conditions for verbatim copying, provided that the
9 .\" entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one
12 .\" Since the Linux kernel and libraries are constantly changing, this
13 .\" manual page may be incorrect or out-of-date. The author(s) assume no
14 .\" responsibility for errors or omissions, or for damages resulting from
15 .\" the use of the information contained herein. The author(s) may not
16 .\" have taken the same level of care in the production of this manual,
17 .\" which is licensed free of charge, as they might when working
20 .\" Formatted or processed versions of this manual, if unaccompanied by
21 .\" the source, must acknowledge the copyright and authors of this work.
22 .\" Translated into German by Mike Fengler (mike@krt3.krt-soft.de)
24 .TH IPC 5 "27. Dezember 1998" "Linux 0.99.13" "Dateiformate"
26 ipc \- System V Mechanismen für Kommunikation zwischen Prozessen
30 # include <sys/types.h>
40 Diese Handbuchseite bezieht sich auf die System V Mechanismen für
41 Kommunikation zwischen Prozessen, wie sie in Linux verwirklicht
42 wurden: message queues, semaphore sets und shared memory segments.
43 (Zumindest einmal soll denn doch eine Übersetzung versucht werden:
44 Nachrichten - Warteschlangen, Semaphoren (Sperr/Frei - Vermerke)
45 und gemeinsam genutzte Speicherbereiche. Oh Himmel. A.d.Üb.)
46 Im Folgenden bedeutet das Wort
48 eine konkrete Erscheinung (instantiation) einer dieser Mechanismen.
49 .SS Ressource Zugriffsrechte
50 Für jede Ressource verwaltet das System in einer allgemeinen
53 die Informationen, die zur Bestimmung der Rechte auf eine ipc -
54 Operation notwendig sind.
57 Structur, definiert von der
59 system header Datei, enthält folgende Elemente:
63 /* Benutzerkennung des Erzeugers */
67 /* Gruppenkennung des Erzeugers */
71 /* Kennung des Eigentümers */
75 /* Gruppenkennung des Eigentümers */
79 /* Lese/Schreib - Rechte */
85 Struktur bestimmt mit seinen 9 niedrigstwertigen Bits die
86 Zugriffsrechte auf die Ressource für einen Prozess, der einen
87 ipc-Systemaufruf ausführt. Die Rechte werden wie folgt interpretiert:
90 0400 Eigentümer darf lesen
91 0200 Eigentümer darf schreiben
93 0040 Gruppe darf lesen
94 0020 Gruppe darf schreiben
96 0004 Andere dürfen lesen
97 0002 Andere dürfen schreiben
100 Bits 0100, 0010 und 0001 (die Ausführungsbits) werden nicht benutzt.
101 Darüber hinaus bedeutet "schreiben" eigentlich "verändern", soweit
102 es sich auf ein semaphore set bezieht.
104 Die selbe system header Datei definiert auch folgende symbolische
108 Eintrag erzeugen, wenn Schlüssel nicht vorhanden.
111 Mißerfolg, wenn Schlüssel vorhanden.
114 Fehlermeldung, wenn die Anforderung warten muss.
120 Ressource beseitigen.
123 Setzen von Optionen der Ressource.
126 Ansehen der Optionen der Ressource.
132 ist. Alle anderen symbolischen Konstanten sind Flag - Felder, die
133 mit Variablen des Typs
135 ODER - verknüpft werden können.
137 Eine message queue wird eindeutig identifiziert über einen
138 positiven Integerwert
140 und ist mit einer Datenstruktur verbunden, die vom Typ
141 .BR "struct msquid_ds"
144 Diese hat folgende Elemente:
147 struct ipc_perm msg_perm;
151 /* Anzahl wartende messages */
155 /* Bytes max in einer queue */
159 /* pid des letzten msgsnd */
163 /* pid des letzten msgrcv */
167 /* Zeit des letzten msgsnd */
171 /* Zeit des letzten msgrcv */
175 /* Zeit der letzten Änderung */
179 Struktur, die die Zugriffsrechte auf die message queue angibt.
182 derzeitige Anzahl der Messages in der Queue.
185 Maximale Anzahl an Bytes Messagetext, die in der Message Queue
189 ID des Prozesses, der zuletzt den
191 Systemaufruf getätigt hat.
194 ID des Prozesses, der zuletzt den
196 Systemaufruf getätigt hat.
199 Zeitpunkt des letzten
204 Zeitpunkt des letzten
209 Zeitpunkt des letzten Systemaufrufs, bei dem ein Element der
211 Struktur geändert wurde.
213 Ein Semaphore Set wird eindeutig identifiziert durch einen
214 positiven Integerwert
215 .RI "(seine " semid )
216 und ist mit einer Datenstruktur vom Typ
217 .BR "struct semid_ds" ,
218 verbunden, definiert in
220 die folgende Elemente enthält:
223 struct ipc_perm sem_perm;
227 /* Zeit des letzten Aufrufs */
231 /* Zeit der letzten Änderung */
235 /* Anzahl Semaphoren im Set */
239 Struktur für die Zugriffsrechte auf das Semphorenset.
242 Zeitpunkt des letzten
247 Zeitpunkt des letzten
249 Systemaufrufs, der einen Eintrag o.g. Struktur oder eine zum Set
250 gehörende Semaphore geändert hat.
253 Anzahl der Semaphoren im Set. Jede Semaphore des Sets wird
254 repräsentiert durch einen nicht negativen Integerwert zwischen
259 Eine Semaphore ist eine Datenstruktur des Typs
261 mit folgenden Einträgen:
269 /* pid des letzten Aufrufs */
273 /* Anzahl Prozesse 1 (s.w.u.) */
277 /* Anzahl Prozesse 2 (s.w.u.) */
280 Semaphorenwert: eine nicht - negativea Ganzzahl.
283 ID des letzten Prozesses, der mit dieser Semaphore eine
284 Semaphorenoperation ausführte.
287 Anzahl Prozesse 1. Gemeint sind die Prozesse, die darauf warten,
293 Anzahl Prozesse 2. Gemeint sind die Prozesse, die darauf warten, dass
296 .SS Shared Memory Segments
297 Ein Shared Memory Segment wird eindeutig identifiziert durch eine
299 .RI "(seine " shmid )
300 und ist verbunden mit einer Datenstruktur vom Typ
301 .BR "struct shmid_ds" ,
304 mit folgenden Einträgen:
307 struct ipc_perm shm_perm;
311 /* Größe des Segments */
315 /* pid des Erzeugers */
319 /* pid, letzte Operation */
323 /* Anzahl derzeitiger Anbindungen */
327 /* Zeit der letzten Anbindung */
331 /* Zeit der letzten Freigabe */
335 /* Zeit der letzten Änderung */
339 Struktur, die die Zugriffsrechte auf das Shared Memory Segment
343 Größe des Segments in Bytes.
346 ID des Prozesses, der das Shared Memory Segment erzeugt hat.
349 ID des letzten Prozesses, der den
353 Systemaufruf ausgeführt hat.
356 Anzahl von Prozessen, die derzeit mit diesem Shared Memory Segment