Qu'est-ce que obsolètes descripteur de fichier " dans Linux signifie?
Dire que j'ai un terminal ouvert, et à travers le terminal j'ai cd
'ed d'un répertoire. Par le biais d'un autre terminal, j'ai supprimer ce répertoire et de le restaurer à partir d'un nombre identique de sauvegarde. Lorsque j'essaie de vim
un fichier à partir du premier terminal, dans le même répertoire, pourquoi ai-je une erreur sur un rassis descripteur de fichier? Ça veut dire quoi? (Sur une note de côté, j'ai trouvé qu'il est possible de contourner ce problème par le biais de cd $(pwd)
.)
- 73.000 vues, 29 upvotes, pourtant, cette question est fermée. Hors-Sujet? Évidemment pas. J'ai couru à travers ce problème en tant que développeur de logiciels, pas en tant que super-utilisateur.
Vous devez vous connecter pour publier un commentaire.
Lorsque le répertoire est supprimé, le inode pour ce répertoire (et les inodes pour son contenu) sont recyclés. Le pointeur de votre shell a à ce répertoire de l'inode (et son contenu est d'inodes) ne sont plus valides. Lorsque le répertoire est restauré à partir de la sauvegarde, l'ancien inodes sont pas (nécessairement) réutilisés; le répertoire et son contenu sont stockées sur des inodes. La seule chose qui reste le même, c'est que le parent répertoire réutilise le même nom pour la restauration du répertoire (parce que vous lui avez dit de).
Maintenant, si vous tentez d'accéder au contenu du répertoire original de votre shell est encore pointant vers, il communique cette demande pour le système de fichiers comme une demande pour l'origine de l'inode, qui a depuis été recyclés (et peut même être utilisé pour quelque chose de totalement différent maintenant). Ainsi, vous obtenez un
stale file handle
message parce que vous avez demandé pour certains inexistant données.Lorsque vous effectuez une
cd
opération, le shell réévalue l'inode emplacement de n'importe quelle destination que vous lui communiquez. Maintenant que votre shell sait que la nouvelle de l'inode du répertoire (et de la nouvelle inodes pour son contenu), les futures demandes de son contenu sera valide.