Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ stdipc(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

msgget(2)

semget(2)

shmget(2)

stat(2)

makedev(3C)

ipc(5)

types(5)

stdipc(3C)                                                       stdipc(3C)

NAME
     stdipc: ftok - Standardpaket für Interprozeßkommunikation

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

     keyt ftok(const char *path, int id);

BESCHREIBUNG
     Für jede Art von Interprozeßkommunikation muß der Benutzer einen
     Schlüssel bereitstellen, der von den Systemaufrufen msgget(2),
     semget(2) und shmget(2) zum Erhalt der Kennung für die Interprozeßkom-
     munikation verwendet wird. Eine Möglichkeit, einen Schlüssel zu defi-
     nieren, bietet die Funktion ftok(). Eine andere Möglichkeit für das
     Erstellen von Schlüsseln besteht darin, die Projektnummer im höch-
     stwertigen Byte abzuspeichern und den übrigen Teil für eine laufende
     Nummer zu verwenden. Es gibt viele weitere Möglichkeiten zum Aufbauen
     von Schlüsseln, jedoch ist es notwendig, daß jedes System bestimmte
     Normen für deren Bildung festlegt. Wenn eine bestimmte Norm hierfür
     nicht eingehalten wird, besteht die Gefahr, daß nicht zugehörige Pro-
     zesse unbeabsichtigt den Ablauf anderer Prozesse stören. Bei allen
     Arten der Schlüsselbestimmung ist es immer noch möglich, daß zwei Pro-
     zesse zufällig den gleichen Schlüssel benutzen. Achten Sie daher dar-
     auf, daß das höchstwertige Byte eines Schlüssels auf irgendeine Weise
     auf ein Projekt verweist, so daß die Schlüssel nicht innerhalb eines
     Systems in Konflikt geraten.

     ftok() gibt einen Schlüssel zurück, der auf path und id basiert und
     der in nachfolgenden Systemaufrufen msgget(), semget() und shmget()
     verwendet werden kann. path muß der Pfadname einer bestehenden Datei
     sein, auf die der Prozeß zugreifen kann. id ist ein Zeichen, das ein
     Projekt eindeutig kennzeichnet. Beachten Sie, daß ftok() für Dateien,
     die Verweise sind, den gleichen Schlüssel zurückgibt, wenn es mit der
     gleichen Kennung id aufgerufen wird, und daß es andere Schlüssel
     zurückgibt, wenn es mit demselben Dateinamen, jedoch mit anderen Ken-
     nungen id aufgerufen wird.

     Der Schlüssel setzt sich zusammen aus id, der Minor-Nummer [vgl.
     makedev(3C)] und dem I-Node von path. Nur die niederwertigen 8 Bits
     von id und der Minor-Nummer sind signifikant. Vom I-Node sind nur die
     16 niederwertigen Bits signifikant. Das Verhalten von ftok() ist unbe-
     stimmt, wenn diese Bits 0 sind.

ERGEBNIS
     ftok() gibt (keyt)-1 zurück, wenn path nicht vorhanden ist, oder wenn
     der Prozeß nicht darauf zugreifen kann.








Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

stdipc(3C)                                                       stdipc(3C)

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     Die Funktion ftok() schlägt bei folgenden Bedingungen fehl:

     EACCES        Für eine Komponente des Pfadpräfixes wird die Suchbe-
                   rechtigung verweigert.

     ELOOP         Es wurden zu viele symbolische Links beim Auflösen von
                   path gefunden.

     ENAMETOOLONG  Die Länge des Arguments path überschreitet PATHMAX,
                   oder eine Komponente des Pfadnamens ist länger als
                   NAMEMAX.

     ENOENT        Eine Komponente von path gibt eine nicht vorhandene
                   Datei an, oder path ist eine leere Zeichenkette.

     ENOTDIR       Eine Komponente des Pfads ist kein Verzeichnis.

     Die Funktion ftok() kann bei folgender Bedingung fehlschlagen:

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

HINWEISE
     Wenn die Datei entfernt wird, deren Pfad an ftok() weitergereicht
     wurde, während die Schlüssel weiterhin auf diese Datei verweisen, wird
     bei späteren Aufrufen von ftok() mit gleichem path und id ein Fehler
     ausgegeben. Wenn dieselbe Datei wieder erstellt wird, gibt ftok()
     wahrscheinlich einen anderen Schlüssel als bei dem ursprünglichen Auf-
     ruf zurück.

SIEHE AUCH
     msgget(2), semget(2), shmget(2), stat(2), makedev(3C), ipc(5),
     types(5).















Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026