Что происходит с файлами, которые удаляются, когда у них открыт дескриптор файла?
Я думал об этом с тех пор, как понял, что могу удалить видеофайл, пока он воспроизводился в MPlayer, и он все равно будет проигрываться до конца. Откуда он берет данные? Это все еще идет с жесткого диска? Это было скопировано в RAM после того, как я удалил файл?
Если он все еще находится на жестком диске, что произойдет, если я заполняю файловую систему, когда программа выполняет чтение из фактически нераспределенного пространства? Если он буферизируется в ОЗУ, что произойдет, если я очисту буферы?
Что произойдет, если файл был в общей папке NFS - хранится ли он на сервере? (Разве это не угроза безопасности - DoS тоннами открытых удаленных файловых дескрипторов?)
Выполнение lsof -n |grep '(deleted)'
иногда дает интересные результаты; если я обновляю пакеты, которые заменяют файлы общих библиотек, тогда запущенные программы, которые использовали эти библиотеки, все равно смогут использовать их, как будто ничего не изменилось.
Бонусный вопрос: есть ли способ вернуть данные из мертвых в этой ситуации?