DOKK / manpages / debian 11 / manpages-de-dev / ftok.3.de
FTOK(3) Linux-Programmierhandbuch FTOK(3)

ftok - konvertiert einen Pfadnamen und einen Projektbezeichner in einen System-V-IPC-Schlüssel

ÜBERSICHT

#include <sys/types.h>
#include <sys/ipc.h>

key_t ftok(const char *pathname, int proj_id);

Die Funktion ftok() verwendet die Identität der durch pathname (muss auf eine existierende Datei ohne Zugriffsbeschränkungen weisen) angegebenen Datei und die niederwertigsten 8 Bit von proj_id (muss ungleich Null sein) für die Erzeugung eines System-V-IPC-Schlüssels des Typs key_t. Der Schlüssel eignet sich für den Einsatz mit msgget(2), semget(2) oder shmget(2).

Der resultierende Wert ist der gleiche für alle Pfadnamen, welche die gleiche Datei benennen, wenn der gleiche Wert von proj_id verwendet wird. Der Rückgabewert sollte ein anderer sein, wenn sich die (gleichzeitig bestehenden) Dateien oder die Projektkennungen unterscheiden.

Bei Erfolg wird der erzeugte Wert vom Typ key_t zurückgegeben, ansonsten -1 und der Fehlerindikator errno wird wie beim Systemaufruf stat(2) gesetzt.

Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

Schnittstelle Attribut Wert
ftok() Multithread-Fähigkeit MT-Safe

POSIX.1-2001, POSIX.1-2008.

Auf einigen sehr alten Systemen war der Prototyp:


key_t ftok(char *pathname, char proj_id);

Heute ist proj_id ein int, es werden aber immer noch nur 8 Bit verwendet. Typische Anwendungen verwenden für proj_id ein ASCII-Zeichen, weshalb das Verhalten nicht definiert ist, wenn proj_id gleich Null ist.

Natürlich kann nicht garantiert werden, dass der resultierende key_t-Schlüssel eindeutig ist. Normalerweise verbindet ein umfassendes Herangehen das gegebene proj_id-Byte, die unteren 16 Bits der Inode-Nummer und die unteren 8 Bit der Gerätenummer zu einem 32-Bit-Ergebnis. Kollisionen können leicht vorkommen, zum Beispiel zwischen Dateien auf /dev/hda1 und Dateien auf /dev/sda1.

Siehe semget(2).

msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)

Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux-man-pages. 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/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> 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 die Mailingliste der Übersetzer.

11. April 2020 GNU