Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/01/2007, à 20:18

environ314

où sont les liens vers mon fichier ?

Bonjour

J'ai un fichier ~/r1/toto.txt
depuis ~/r2, je fais un ln ~/r1/toto.txt

Le node du fichier est donc de 2.

Quelle commande permet de retrouver les liens durs vers ce fichier ?


Merci !

Hors ligne

#2 Le 08/01/2007, à 08:41

gene69

Re : où sont les liens vers mon fichier ?

le man ln conseille de regarder ls -L. ça te va? Je comprend pas trop l'interet de la question...

apres ya des API de C; link lstat ...

généralement on fait un ln -s.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#3 Le 08/01/2007, à 10:02

environ314

Re : où sont les liens vers mon fichier ?

généralement on fait un ln -s.

euh, moi je trouve le ln tout court sympathique !
J'utilise un même fichier dans des contextes différents. Du coup, je l'ai à des endroits différents de mon arborescence. Pour quelle raison je ferais le lien de manière symbolique ? Si j'efface le répertoire où est le fichier en question, il continue à vivre dans les autres, ca me semble pratique !

Maintenant, j'aimerais aussi pouvoir savoir quels sont les endroits où j'y fait référence. Ca me paraît aussi légitime.

gene69, si tu as d'autres idées, ne te gène pas pour me les exposer !!

Hors ligne

#4 Le 08/01/2007, à 22:29

JoelS

Re : où sont les liens vers mon fichier ?

environ314 a écrit :

généralement on fait un ln -s.

euh, moi je trouve le ln tout court sympathique !
J'utilise un même fichier dans des contextes différents. Du coup, je l'ai à des endroits différents de mon arborescence. Pour quelle raison je ferais le lien de manière symbolique ? Si j'efface le répertoire où est le fichier en question, il continue à vivre dans les autres, ca me semble pratique !
Maintenant, j'aimerais aussi pouvoir savoir quels sont les endroits où j'y fait référence. Ca me paraît aussi légitime.

Le ln ne fonctionne qu'à l'intérieur d'une même partition, car ce sont les inodes qui pointent directement sur les données, alors que le ln -s crée un pseudo-fichier qui contient le nom du fichier pointé (donc le chemin d'accès puisqu'il fait partie du nom), il traverse donc les partitions. Mais dans ce cas tu n'as qu'un seul inode qui pointe sur le vrai fichier.

Bon, j'ai jamais détaillé le fonctionnement des Unix/linux, mais je crois que quand un fichier est ouvert par une appli, tu as aussi un pointeur dessus (sur les données), donc le  compteur de référence est incrémenté. C'est plus ou moins utilisé notamment pour créer des fichiers temporaires non récupérables par un process différent du process créateur: tu crées un fichier dans ton appli, puis tu le détruis: l'inode n'existe plus mais ton appli pointe toujours sur une zone de données ou tu peux lire et écrire. Enfin je crois. lsof utilise ce truc pour détecter les applis qui utilisent un fichier.

Analyser les pointeurs ne me semble pas trivial, dans la mesure ou je ne pense pas que la zone de données
contient un pointeur inverse vers le ou les inodes. AMHA, il faut parcourir la zone des inodes pour comparer les pointeurs du fichier de référence avec ceux que tu trouves pendant le parcours. C'est certainement facile à faire en C. Peut-être même qu'il existe un truc déjà fait.

Hors ligne