Auf meinem Linux-Dateisystem zeigt ein Symlink auf 127.0.1.1:+xxxxx
.
Warum das Pluszeichen? Könnte es auch ein Minus geben? Warum nicht einfach 127.0.1.1:xxxxx
?
Auf meinem Linux-Dateisystem zeigt ein Symlink auf 127.0.1.1:+xxxxx
.
Warum das Pluszeichen? Könnte es auch ein Minus geben? Warum nicht einfach 127.0.1.1:xxxxx
?
Antworten:
Symbolische Links, die nicht auf eine Datei verweisen, haben überhaupt keine generische Bedeutung. In diesem Fall kann es sich um die Prozess-ID oder einen Port handeln, über den ein spezielles Protokoll gesprochen wurde, oder um eine andere ID. Es hängt alles davon ab, welches Programm es gemacht hat.
Software, die diese Links erstellt, nutzt einfach die Tatsachen, dass 1) das Ziel eines Symlinks nicht existent oder sogar totaler Unsinn sein kann; 2) Das Erstellen eines Symlinks ist eine vollständig atomare Operation mit einem einzigen Systemaufruf (wie das Lesen des Ziels), im Gegensatz zum Erstellen einer regulären Datei, für die mindestens drei separate Systemaufrufe erforderlich sind.
Auf diese Weise kann die Erstellung von Symlinks als eine Möglichkeit zum Sperren (Sicherstellen einer einzelnen Instanz eines Programms) missbraucht werden, auch wenn andere Mechanismen möglicherweise nicht zuverlässig sind. Das Programm benötigt den Symlink nicht, um tatsächlich in eine echte Datei aufgelöst zu werden. Es ist nur wichtig, ob das Erstellen des Links erfolgreich ist oder ob es fehlschlägt, weil der Link bereits vorhanden ist.
fopen
, fwrite
und fclose
?
open
(oder möglicherweise creat
in alter Software) write
und close
nicht die von stdio bereitgestellten f * -Versionen. Aber ja, Sie müssen zumindest etwas tun open
und write
die Datei erstellen und etwas Sinnvolles hinzufügen. Wenn Sie möchten, dass Code "versucht, ihn zu erstellen, wenn er erfolgreich ist, einige Informationen einfügt, andere Informationen daraus liest", kann der zweite Prozess dies einfach versuchen, read
bevor der erste Prozess die Chance dazu hat write
. symlink
vermeidet das; Entweder erfolgreich und erstelle den Link, oder scheitere und stelle sicher, dass readlink
die Informationen für dich da sind.
Soweit ich weiß, bedeutet das "+", dass sich die Nummer nach der IP (das "xxxxx") auf eine "Prozess-ID" bezieht (kein Port, der normalerweise die Notation [IP-Adresse]: [Portnummer] verwendet).
Es ist möglich, dass sich diese "Notation" (ich bin mir nicht sicher, ob ich sie als "Notation" bezeichnen würde, da ich keine "offizielle" Dokumentation kenne) auf etwas anderes bezieht, wenn sie von einer bestimmten Anwendung verwendet wird möglichkeit nicht nur mit symlinks. Die einzigen Fälle, die ich kenne (und bei einer Suche finden konnte, die nicht zu umfangreich war), bezogen sich "+ XXXX" immer auf die Prozess-ID.
/proc
oder sprechen /dev
. Können Sie erklären, wofür dieser Symlink verwendet wird?