¿Qué sucede con los archivos que se eliminan mientras tienen un identificador de archivo abierto?
Me he estado preguntando esto desde que descubrí que podía eliminar un archivo de video mientras se estaba reproduciendo en MPlayer y todavía se reproduciría hasta el final. ¿De dónde saca los datos? ¿Sigue viniendo del disco duro? ¿Se copió a la RAM una vez que eliminé el archivo?
Si todavía está en el disco duro, ¿qué sucede si lleno el sistema de archivos mientras el programa está leyendo desde lo que es esencialmente un espacio no asignado? Si está almacenado en la memoria RAM, ¿qué sucede si enjuago los almacenamientos intermedios?
¿Qué sucede si el archivo estaba en un recurso compartido NFS? ¿Está almacenado en el servidor? (¿No es un riesgo de seguridad, DoS por toneladas de identificadores de archivos remotos abiertos?)
Hacerlo a lsof -n |grep '(deleted)'
veces produce resultados interesantes; si estoy actualizando paquetes que intercambian archivos de bibliotecas compartidas, entonces ejecutar programas que habían estado usando esas bibliotecas todavía podrán usarlos como si nada hubiera cambiado.
Pregunta extra: ¿Hay alguna forma de recuperar los datos de los muertos en esta situación?