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