Это на самом деле не имеет ничего общего с кэшированием.Скорее, это работает из-за того, как работают файловые системы Unix.Когда файл открывается, его индекс читается и указывает, где находятся данные на диске.Когда файл перемещается или удаляется («не связан»), индекс перемещается в новое место или удаляется из каталога.Однако данные, на которые он указывает, не считаются недействительными, пока не будет ссылки на этот индекс.Другими словами, пока файл остается открытым, его удаление или перемещение не влияет на программу, читающую этот файл.
Это не то, как работают файловые системы Windows, и это приводит к общему "файлу".заблокирован "проблемы при попытке удалить файлы, которые используются.(Отказ от ответственности: Это может быть не так с NTFS, которая поддерживает жесткие ссылки, но я вполне уверен, что это имело место в FAT.)
Это работает настолько хорошо, что иногда программы даже используют трюк для автоматическогоочистите после себя, создав файл и «удалив» его сразу, оставив его открытым.Таким образом, временный файл можно продолжать использовать до тех пор, пока программа не завершит работу с ним, после чего он автоматически «исчезнет».
Кстати, программы, которые ожидают возможности закрыть и открыть временный файлфайл будет запутаться, если вы переместите их.Вы можете избежать этого, сделав «копию» с помощью жесткой ссылки.
ln /tmp/Fl* .
Эта команда создаст копии текущего узла, на который ссылается Flash для временного файла, в текущий каталог.На самом деле он не копирует содержимое файла, а только создает вторую ссылку на те же данные на диске.Таким образом, когда Flash закрывается, у вас все еще есть «указатель» на данные, которые он выпустил.
Я некоторое время не изучал эту тему, и, возможно, я неправильно понял некоторую терминологию, поэтому я предлагаю вамХотите узнать больше, прочитайте об инодах и о том, как работают жесткие ссылки .
Из этой ссылки в Википедии:
Процесс отсоединения отделяет имя отданные на томе без уничтожения связанных данных.Данные по-прежнему доступны, пока существует хотя бы одна ссылка, указывающая на них.При удалении последней ссылки пробел считается свободным.