Skip to content

Latest commit

 

History

History
16 lines (12 loc) · 2.39 KB

Lecture 19.md

File metadata and controls

16 lines (12 loc) · 2.39 KB


Немного об устройстве интерфейса файловой системы

В самой директории хранится информация о названии файла и ссылка на другую ячейку памяти с основной информацией (inode)

Hardlink — ссылка на одну inode
Symlink — хранится просто путь на другой файл

Справедливо не для всех, например FAT хранит все в самой директории (поэтому он не поддерживает hardlinkи)

Файловые дескрипторы (FD) ссылаются на inode. Следовательно если меняются данные — изменения видны. Если файл удалить/переименовать - FD об этом даже не узнает

Появляется хак - если файл создается долго, можно просто создать inode, записать файл, а потом просто привязать ее к какой-то директории

В винде используются file lockes, в линухе есть что-то похожее, но не используется. Блокировать файл, чтобы не было работы с данными, которые уже некорректны. Но тогда вываливаются ошибки и что лучше - хз.

Можно подписываться на изменения файлов, но нужно понимать, что подписываетесь вы на inode. Поэтому не стоит путать изменения файла(данных) или изменения в каталоге.

Системный вызов stat позволяет вернуть что-то похожее на inode. По нему можно посчитать ref-count и как-то разобраться с hardlinks