Qu'arrive-t-il aux fichiers supprimés alors qu'ils ont un descripteur de fichier ouvert?
Je me le demande depuis que j'ai compris que je pouvais supprimer un fichier vidéo pendant qu'il était en cours de lecture dans MPlayer et qu'il continuerait à jouer jusqu'à la fin. D'où tire-t-il les données? Provient-il toujours du disque dur? At-il été copié dans la RAM une fois que j'ai supprimé le fichier?
S'il se trouve toujours sur le disque dur, que se passe-t-il si je remplis le système de fichiers pendant que le programme exécute la lecture à partir de ce qui est essentiellement de l'espace non alloué? S'il est mis en mémoire tampon dans la RAM, que se passe-t-il si je vide les tampons?
Que se passe-t-il si le fichier se trouve sur un partage NFS - est-il stocké sur le serveur? (N'est-ce pas un risque pour la sécurité - DoS par des tonnes de descripteurs de fichiers distants ouverts?)
Faire un lsof -n |grep '(deleted)'
donne parfois des résultats intéressants; si je mets à niveau des packages qui échangent des fichiers de bibliothèque partagée, l'exécution de programmes qui utilisaient ces bibliothèques pourra toujours les utiliser comme si rien n'avait changé.
Question bonus: existe-t-il un moyen de récupérer les données des morts dans cette situation?