Cosa succede ai file che vengono eliminati mentre hanno un handle di file aperto a loro?
Mi chiedo questo da quando ho capito che avrei potuto eliminare un file video mentre era in riproduzione in MPlayer e sarebbe stato riprodotto fino alla fine. Da dove sta estraendo i dati? Viene ancora dal disco rigido? È stato copiato nella RAM dopo aver eliminato il file?
Se è ancora sul disco rigido, cosa succede se riempio il file system mentre il programma è in esecuzione leggendo da quello che è essenzialmente spazio non allocato? Se è bufferizzato nella RAM, cosa succede se svuoto i buffer?
Cosa succede se il file si trovava su una condivisione NFS: è archiviato sul server? (Non è un rischio per la sicurezza - DoS da tonnellate di handle di file remoti aperti?)
Fare un lsof -n |grep '(deleted)'
volte produce risultati interessanti; se sto aggiornando i pacchetti che sostituiscono i file delle librerie condivise, i programmi che hanno utilizzato quelle librerie saranno comunque in grado di usarli come se nulla fosse cambiato.
Domanda bonus: c'è un modo per recuperare i dati dai morti in questa situazione?