ftok - konvertiert einen Pfadnamen und einen Projektbezeichner in einen
System-V-IPC-Schlüssel
Standard-C-Bibliothek (
libc,
-lc)
#include <sys/ipc.h>
key_t ftok(const char *Pfadname, int
Projektkennung);
Die Funktion
ftok() verwendet die Identität der durch
Pfadname (muss auf eine existierende Datei ohne
Zugriffsbeschränkungen weisen) angegebenen Datei und die
niederwertigsten 8 Bit von
Projektkennung (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
Projektkennung
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 *Pfadname, char Projektkennung);
Heute ist
Projektkennung ein
int, es werden aber immer noch nur 8
Bit verwendet. Typische Anwendungen verwenden für
Projektkennung
ein ASCII-Zeichen, weshalb das Verhalten nicht definiert ist, wenn
Projektkennung 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
Projektkennung-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)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
<
[email protected]>, Martin Eberhard Schauer
<
[email protected]> und Mario Blättermann
<
[email protected]> 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