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.txtCorrigé
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 physique | Lien symbolique | |
|---|---|---|
| Inode | le même | un autre |
| Survit au renommage de la cible | oui | non |
| Vers un répertoire, vers un autre disque | non | oui |
| Cible inexistante possible | non | oui |
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.