.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" FIXME . There is now duplication of some of the information .\" below in semctl.2, msgctl.2, and shmctl.2 -- MTK, Nov 04 .\" .\" FIXME . Ultimately, there should probably be .\" svmq_overview(7), svshm_overview(7), and svsem_overview(7) .\" that provide an overview of each System V IPC mechanism. .\" In that case: .\" * Those files should add a discussion of the /proc/sysvipc .\" interfaces. .\" * Documentation of the various /proc interfaces should move into .\" those files (from proc(5)), and references in the various *.2 .\" pages that refer to the /proc files should be adjusted. .\" * The only part that uniquely belongs in sysvipc(7) is perhaps .\" the discussion of ipc_perm. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SVIPC 7 "10. Oktober 2019" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG sysvipc \- System\-V\-Mechanismen für Interprozesskommunikation .SH ÜBERSICHT .nf \fB#include \fP \fB#include \fP \fB#include \fP .fi .SH BESCHREIBUNG Diese Handbuchseite bezieht sich auf die Linux\-Implementierung der System\-V\-Mechanismen für Interprozesskommunikation: Nachrichten\-Warteschlangen (Message Queues), Semaphoren\-Gruppen (Semaphore Sets) und gemeinsam genutzte Speichersegmente (Shared Memory Segments). Im Folgenden bedeutet das Wort \fBRessource\fP eine konkrete Umsetzung eines dieser Mechanismen. .SS Ressourcen\-Zugriffsrechte Für jede Ressource verwaltet das System in einer allgemeinen Struktur des Typs \fIstruct ipc_perm\fP die Informationen, die zur Bestimmung der Rechte für eine IPC\-Aktion notwendig sind. Die Struktur \fIipc_perm\fP enthält die folgenden Elemente: .PP .in +4n .EX struct ipc_perm { uid_t cuid; /* Benutzerkennung des Urhebers */ gid_t cgid; /* Gruppenkennung des Urhebers */ uid_t uid; /* Benutzerkennung des Eigentümers */ gid_t gid; /* Gruppenkennung des Eigentümers */ unsigned short mode; /* Lese\- und Schreibrechte */ }; .EE .in .PP Die 9 niedrigstwertigen Bits des Elements \fImode\fP der Struktur \fIipc_perm\fP legen die Zugriffsrechte auf die Ressource für Prozesse fest, die einen IPC\-Systemaufruf ausführen. Die Rechte werden wie folgt interpretiert: .PP .nf 0400 Lesen durch Benutzer. 0200 Schreiben durch Benutzer. 0040 Lesen durch Gruppe. 0020 Schreiben durch Gruppe. 0004 Lesen durch Andere. 0002 Schreiben durch Andere. .fi .PP Die Bits 0100, 0010 und 0001 (die Ausführungsbits) werden nicht vom System benutzt. Darüber hinaus bedeutet »schreiben« für Semaphoren\-Gruppen tatsächlich »verändern«. .PP Dieselbe System\-Header\-Datei definiert auch die folgenden symbolischen Konstanten: .TP 14 \fBIPC_CREAT\fP Eintrag erzeugen, wenn Schlüssel nicht vorhanden. .TP \fBIPC_EXCL\fP Misserfolg, wenn Schlüssel vorhanden. .TP \fBIPC_NOWAIT\fP Fehler, wenn die Anforderung warten muss. .TP \fBIPC_PRIVATE\fP Geheimer Schlüssel. .TP \fBIPC_RMID\fP Ressource entfernen. .TP \fBIPC_SET\fP Optionen für Ressourcen setzen. .TP \fBIPC_STAT\fP Optionen für Ressourcen feststellen. .PP Beachten Sie, dass \fBIPC_PRIVATE\fP vom Typ \fIkey_t\fP ist. Alle anderen symbolischen Konstanten sind Felder von Schaltern (Flags), für die eine ODER\-Verknüpfung mit einer \fIint\fP\-Variablen möglich ist. .SS "Nachrichten\-Warteschlangen (Message queues)" Eine Nachrichten\-Warteschlange wird eindeutig über ihre \fImsqid\fP (eine positive Ganzzahl) identifiziert und ist mit einer Datenstruktur des Typs \fIstruct msquid_ds\fP verbunden. Die Struktur wird in \fI\fP definiert und besteht aus den folgenden Elementen: .PP .in +4n .EX struct msqid_ds { struct ipc_perm msg_perm; msgqnum_t msg_qnum; /* Anzahl der Nachrichten in */ /* der Warteschlange */ msglen_t msg_qbytes; /* maximale Nachrichtenlänge */ /* für die Warteschlange */ 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 */ }; .EE .in .TP 11 \fImsg_perm\fP Die Struktur \fIipc_perm\fP legt die Zugriffsrechte auf die Nachrichtenwarteschlange fest. .TP \fImsg_qnum\fP Aktuelle Anzahl der Nachrichten in der Warteschlange. .TP \fImsg_qbytes\fP Größte erlaubte Nachrichtenlänge in Byte für die Nachrichtenwarteschlange. .TP \fImsg_lspid\fP Kennung des Prozesses, der als letzter \fBmsgsnd\fP(2) aufgerufen hat. .TP \fImsg_lrpid\fP Kennung des Prozesses, der als letzter \fBmsgrcv\fP(2) aufgerufen hat. .TP \fImsg_stime\fP Zeitpunkt des letzten Aufrufs von \fBmsgsnd\fP(2) .TP \fImsg_rtime\fP Zeitpunkt des letzten Aufrufs von \fBmsgcv\fP(2) .TP \fImsg_ctime\fP Zeitpunkt des letzten Systemaufrufs, bei dem ein Element von \fImsqid_ds\fP geändert wurde. .SS "Semaphoren\-Gruppen (Semaphore Sets)" Eine Gruppe von Semaphoren wird eindeutig durch ihre \fIsemid\fP (eine positive Ganzzahl) identifiziert und ist mit einer Datenstruktur des Typs \fIstruct semid_ds\fP verbunden. Die Struktur wird in \fI\fP definiert und enthält die folgenden Elemente: .IP .in +4n .EX struct semid_ds { struct ipc_perm sem_perm; time_t sem_otime; /* Zeitpunkt der letzten Aktion */ time_t sem_ctime; /* Zeitpunkt der letzten Änderung */ unsigned long sem_nsems; /* Anzahl der Semaphoren in der Gruppe */ }; .EE .in .TP 11 \fIsem_perm\fP Die Struktur \fIipc_perm\fP legt die Zugriffsrechte für die Semaphoren\-Gruppe fest. .TP \fIsem_otime\fP Zeitpunkt des letzten Aufrufs von \fBsemop\fP(2) .TP \fIsem_ctime\fP Zeitpunkt des letzten Aufrufs von \fBsemctl\fP(2), der einen Eintrag der oben genannten Struktur oder einen zur Gruppe gehörenden Semaphor geändert hat. .TP \fIsem_nsems\fP Anzahl der Semaphoren in der Gruppe. Jeder Semaphor der Gruppe wird durch eine nicht negative Ganzzahl zwischen \fI0\fP und \fIsem_nsems\-1\fP repräsentiert. .PP Ein Semaphor ist eine Datenstruktur des Typs \fIstruct sem\fP mit folgenden Elementen: .PP .in +4n .EX .\" unsigned short semncnt; /* nr awaiting semval to increase */ .\" unsigned short semzcnt; /* nr awaiting semval = 0 */ struct sem { int semval; /* Wert des Semaphors */ int sempid; /* PID des Prozesses, der zuletzt veränderte */ }; .EE .in .TP 11 \fIsemval\fP Wert des Semaphors: eine nicht negative Ganzzahl .TP \fIsempid\fP .\".TP .\".I semncnt .\"Number of processes suspended awaiting for .\".I semval .\"to increase. .\".TP .\".I semznt .\"Number of processes suspended awaiting for .\".I semval .\"to become zero. PID des letzten Prozesses, der den Wert dieses Semaphoren veränderte. .SS "Gemeinsame Speichersegmente" Ein gemeinsames Speichersegment wird eindeutig durch seine \fIshmid\fP (eine positive Ganzzahl) identifiziert und ist mit einer Datenstruktur des Typs \fIstruct shmid_ds\fP verbunden. Die Struktur wird in \fI\fP definiert und enthält die folgenden Elemente: .PP .in +4n .EX struct shmid_ds { struct ipc_perm shm_perm; size_t shm_segsz; /* Segmentgröße */ pid_t shm_cpid; /* PID des Urhebers */ pid_t shm_lpid; /* PID der letzten Aktion */ shmatt_t shm_nattch; /* Anzahl der zugreifenden */ /* Prozesse */ time_t shm_atime; /* Zeitpunkt der letzten */ /* Einblendung */ time_t shm_dtime; /* Zeitpunkt der letzten */ /* Ausblendung */ time_t shm_ctime; /* Zeitpunkt der letzten */ /* Änderung */ }; .EE .in .TP 11 \fIshm_perm\fP Struktur des Typs \fIipc_perm\fP für die Festlegung der Zugriffsrechte auf das gemeinsame Speichersegment. .TP \fIshm_segsz\fP Größe des gemeinsamen Speichersegments in Byte. .TP \fIshm_cpid\fP Kennung des Prozesses, der das gemeinsame Speichersegment eingerichtet hat. .TP \fIshm_lpid\fP Kennung des letzten Prozesses, der \fBshmat\fP(2) oder \fBshmdt\fP(2) aufgerufen hat. .TP \fIshm_nattch\fP Anzahl von aktiven Einblendungen für dieses gemeinsame Speichersegment. .TP \fIshm_atime\fP Zeitpunkt des letzten Aufrufs von \fBshmat\fP(2) .TP \fIshm_dtime\fP Zeitpunkt des letzten Aufrufs von \fBshmdt\fP(2) .TP \fIshm_ctime\fP Zeitpunkt des letzten Aufrufs von \fBshmctl\fP(2), der \fIshmid_ds\fP verändert hat. .SS IPC\-Namensräume Für eine Diskussion der Interaktion von System\-V\-IPC\-Objekten und IPC\-Namensräumen lesen Sie \fBipc_namespaces\fP(7). .SH "SIEHE AUCH" \fBipcmk\fP(1), \fBipcrm\fP(1), \fBipcs\fP(1), \fBlsipc\fP(1), \fBipc\fP(2), \fBmsgctl\fP(2), \fBmsgget\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBsemctl\fP(2), \fBsemget\fP(2), \fBsemop\fP(2), \fBshmat\fP(2), \fBshmctl\fP(2), \fBshmdt\fP(2), \fBshmget\fP(2), \fBftok\fP(3), \fBipc_namespaces\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.04 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Mike Fengler , Martin Eberhard Schauer und Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE 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 die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .