Wofür steht das Pluszeichen in einem Symlink, der auf '127.0.1.1:+xxxxx' verweist?

52

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?

myMethod
quelle
Ist das ein symbolischer Link unter / proc?
Joshua
4
@Joshua: Wahrscheinlicher unter ~ / .mozilla / oder ähnlichem. Firefox / Thunderbird und iirc Steam verwenden solche Symlinks zum Sperren.
Grawity
2
Ist xxxxx eine Zahl oder die Zeichen xxxxx?
Mawg
2
Wahrscheinlich ohne Bezug, aber nur zur Information. In einigen IRC-Clients gab das Pluszeichen vor dem Port an, dass der Remote-Server SSL / TLS verwendet.
eKKiM

Antworten:

93

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.

Grawity
quelle
5
"* im Gegensatz zum Erstellen einer regulären Datei, für die mindestens drei separate Systemaufrufe erforderlich sind. *" - Könnten Sie dies erläutern? Meinst du fopen, fwriteund fclose?
Nic Hartley
11
@NicHartley: Die Systemaufrufe sind open(oder möglicherweise creatin alter Software) writeund closenicht die von stdio bereitgestellten f * -Versionen. Aber ja, Sie müssen zumindest etwas tun openund writedie 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, readbevor der erste Prozess die Chance dazu hat write. symlinkvermeidet das; Entweder erfolgreich und erstelle den Link, oder scheitere und stelle sicher, dass readlinkdie Informationen für dich da sind.
Guntram Blohm
"... kann missbraucht werden ..." Ist dieser Missbrauch wie in "auf eine Weise verwendet, die nicht beabsichtigt war " oder "auf eine Weise verwendet, die nicht verwendet werden sollte"?
Der Kerl mit dem Hut
22

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.

Albin
quelle
1
Ich habe es gerade überprüft. In meinem Fall ist das wirklich so.
myMethod
1
Gibt es irgendwo eine Dokumentation dieses Formats, auf die Sie verlinken könnten?
David Z
1
Ich bin mir nicht sicher, ich erinnere mich einfach aus eigener Erfahrung.
Albin
2
Es hört sich so an, als würden Sie über einen Symlink in einem bestimmten Verzeichnis wie /procoder sprechen /dev. Können Sie erklären, wofür dieser Symlink verwendet wird?
Barmar
4
Dies ist das erste Mal, dass ich diese Notation überhaupt gesehen habe. Ich bin überrascht zu hören, dass Sie sagen, dass es sich um eine allgemeine Notation handelt. Wo haben Sie gesehen, dass es sich um eine Prozess-ID handelt?
Barmar