Adloun

Un nom n'est pas un fichier

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 8 — Mémoire, fichiers et entrées-sorties

Énoncé

On exécute les commandes suivantes. Qu'affiche chaque cat ? Que reste-t-il à la fin ?


echo "contenu original" > rapport.txt
ln    rapport.txt copie_dure.txt
ln -s rapport.txt copie_douce.txt
mv    rapport.txt archive.txt
cat copie_dure.txt
cat copie_douce.txt
rm archive.txt
cat copie_dure.txt

Corrigé

Mesures. Après les trois premières commandes, ls -li donne :


124357659 -rw-r--r--  2  copie_dure.txt
124357659 -rw-r--r--  2  rapport.txt
124357662 lrwxr-xr-x  1  copie_douce.txt -> rapport.txt

Trois faits s'y lisent : rapport.txt et copie_dure.txt portent le même numéro d'inode, ; le compteur qui suit les droits vaut pour eux — c'est le nombre de noms de cet inode ; et copie_douce.txt a un inode différent, à lui seul, de taille octets, soit exactement la longueur de la chaîne rapport.txt. Un lien symbolique est un petit fichier qui contient un chemin.

Après mv rapport.txt archive.txt :


cat copie_dure.txt   -->  contenu original
cat copie_douce.txt  -->  cat: copie_douce.txt: No such file or directory

Le lien physique est indemne : renommer, c'est changer un nom, et l'inode ne contient pas les noms. Le lien symbolique, lui, contient la chaîne rapport.txt, qui ne désigne plus rien : il pointe dans le vide. Remarquer que le fichier copie_douce.txt existe toujours — c'est sa cible qui manque.

Après rm archive.txt, le compteur de noms tombe à et


cat copie_dure.txt   -->  contenu original

Le contenu est toujours là. rm n'efface pas un fichier : il retire un nom, et décrémente le compteur. Le contenu n'est libéré que lorsque le compteur atteint — et, précision qui explique bien des surprises, qu'aucun processus ne le tient encore ouvert.

La table de décision :

Lien physiqueLien symbolique
Inodele mêmeun autre
Survit au renommage de la cibleouinon
Vers un répertoire, vers un autre disquenonoui
Cible inexistante possiblenonoui

Le lien physique est plus solide et moins souple ; le symbolique l'inverse. Aucun des deux ne domine l'autre, et c'est pourquoi les deux existent.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.