web-dev-qa-db-fra.com

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

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 ne pas simplement 127.0.1.1:xxxxx?

52
myMethod

Les liens symboliques qui ne pointent pas vers un fichier n'ont aucune signification générique. Dans ce cas, il s'agit de pourrait être l'ID de processus, ou un port avec un protocole spécial énoncé dessus, ou 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 (tout 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 l’instance unique d’un programme) même lorsque d’autres mécanismes risquent de 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 uniquement de savoir si creation le lien réussit ou s'il échoue car il existe déjà.

95
grawity

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" (je ne suis pas sûre de l'appeler "notation" car je ne connais aucune documentation "officielle") renvoie à 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.

22
Albin