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
?
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
?
Réponses:
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à.
fopen
, fwrite
et fclose
?
open
(ou peut-être creat
dans un ancien logiciel) write
, et close
non les versions f * fournies par stdio. Mais, oui, vous devez au moins faire open
et write
cré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 read
avant 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 readlink
a l'information pour vous.
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.
/proc
ou /dev
. Pouvez-vous expliquer à quoi sert ce lien symbolique?