Dans un lien symbolique pointant vers '127.0.1.1:+xxxxx', à quoi sert le caractère plus?

52

Sur mon système de fichiers Linux, un lien symbolique pointe vers 127.0.1.1:+xxxxx.

Pourquoi le signe plus? Pourrait-il y avoir aussi un moins? Pourquoi pas juste 127.0.1.1:xxxxx?

ma méthode
la source
Ce lien symbolique est-il sous / proc?
Josué
4
@Joshua: Plus probablement sous ~ / .mozilla / ou similaire. Firefox / Thunderbird et iirc Steam utilisent ces liens symboliques pour le verrouillage.
Grawity
2
Xxxxx est-il un nombre ou les caractères xxxxx?
Mawg
2
Probablement sans lien, mais juste pour information. Sur certains clients IRC, le signe plus précédant le port était utilisé pour indiquer que le serveur distant utilise SSL / TLS.
eKKiM

Réponses:

93

Les liens symboliques qui ne pointent pas vers un fichier n'ont aucune signification générique. Dans ce cas, il peut s’agir de l’ID de processus, d’un port avec un protocole particulier énoncé ou d’un autre identifiant. Tout dépend de quel programme l'a fait.

Le logiciel qui crée ces liens tire simplement parti des faits suivants: 1) la cible d'un lien symbolique peut être inexistante, voire même absurde; 2) la création d'un lien symbolique est une opération entièrement atomique à un seul appel système (comme la lecture de sa cible), contrairement à la création d'un fichier normal qui prend au moins 3 appels système distincts.

Ainsi, la création de liens symboliques peut être utilisée à mauvais escient comme moyen de verrouillage (en assurant une instance unique d'un programme) même lorsque d'autres mécanismes peuvent ne pas être fiables. Le programme n'a pas besoin du lien symbolique pour être résolu en un fichier réel: il se soucie seulement de savoir si la création du lien a réussi ou si elle échoue car elle existe déjà.

Grawity
la source
5
"* contrairement à la création d'un fichier normal qui prend au moins 3 appels système distincts. *" - Pouvez-vous préciser? Voulez - vous dire fopen, fwriteet fclose?
Nic Hartley
11
@NicHartley: Les appels système sont open(ou peut-être creatdans un ancien logiciel) write, et closenon les versions f * fournies par stdio. Mais, oui, vous devez au moins faire openet writecréer le fichier et y insérer quelque chose de significatif. Maintenant, si vous voulez que du code "essaye de le créer, s'il y parvient, y insère des informations, sinon, vous en lise", le second processus peut simplement l'essayer readavant que le premier processus ait une chance de le faire write. symlinkévite cela; soit réussir et créer le lien, ou échouer et être sûr readlinka l'information pour vous.
Guntram Blohm soutient Monica
"... peut être abusé en tant que moyen ..." Cet abus est-il utilisé dans le sens "utilisé de manière non destinée à être utilisée" ou "utilisé de manière à ne pas être utilisé"?
Le gars avec le chapeau
22

Pour autant que je sache, le "+" signifie que le numéro après l'adresse IP (le "xxxxx") fait référence à un "ID de processus" (et non un port qui utilise généralement la notation [adresse IP]: [numéro de port]).

Il est possible que cette "notation" (pas sûr que je l'appelle une "notation" puisque je ne connais aucune documentation "officielle") fait référence à autre chose si elle est utilisée par une application spécifique - mais là encore, c'est toujours le possibilité non seulement avec des liens symboliques. Les seuls cas que je connaisse (et que je pouvais trouver avec une recherche qui ne soit pas trop longue), le "+ XXXX" faisait toujours référence à l'ID de processus.

Albin
la source
1
Je viens de vérifier. Dans mon cas, c'est le cas.
myMethod
1
Existe-t-il une documentation de ce format quelque part vers laquelle vous pourriez créer un lien?
David Z
1
Pas sûr, je m'en souviens juste de l'expérience pratique.
Albin
2
On dirait que vous parlez d'un lien symbolique dans un répertoire spécial, comme /procou /dev. Pouvez-vous expliquer à quoi sert ce lien symbolique?
Barmar
4
C'est la première fois que je vois cette notation, alors je suis surpris de vous entendre dire que c'est une notation générale. Où avez-vous vu cela signifiait un ID de processus?
Barmar