svipc
System-V-Mechanismen für Interprozesskommunikation
- Provided by: manpages-de (Version: 1.4-1)
- Report a bug
System-V-Mechanismen für Interprozesskommunikation
#include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h>
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.
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:
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.
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 */
};
Ein Gruppe 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 in der Gruppe */
};
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 */
};
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 */
};
ipcmk(1), ipcrm(1), ipcs(1), 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)
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
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>.