обрабатывает каталоги - PullRequest
0 голосов
/ 20 ноября 2010

Я пытаюсь понять, как каталоги и файлы связаны друг с другом на уровне файловой системы, в частности * файловых систем nix, таких как FFS или EXT.

Я концептуально понимаю, что у inode есть некоторые метаданные и указатели на расположение файлов, но как они хранят информацию о каталоге и также знают, какие файлы находятся в каком каталоге?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2010

В каталоге также есть индекс.Однако он не содержит указателей на расположение содержимого файла (поскольку это не файл), а указателей на inode-ы файлов / подкаталогов каталога (так что это в основном файл, но со специальным содержимым / флажками),Кроме того, он содержит указатели на родительский каталог и сам по себе.

Чтобы добраться до определенного файла, структуру директории просто обойти, как при обходе дерева - чтобы узнать полный путь к файлу, псевдокод выглядит следующим образомчто:

parts = []
inode = inode_of(file);
parts.add(inode.name);
while(inode.parent):
    parts.add(inode.parent.name)
    inode = inode.parent
path = parts.reverse.join('/')
0 голосов
/ 20 ноября 2010

Каталог - это просто особый вид файла. В его inode установлен бит S_IFDIR в поле режима. Его содержимое представляет собой некоторую структуру данных, которая содержит имена файлов и номера узлов.

0 голосов
/ 20 ноября 2010

вы могли бы начать с чтения этого http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-inodes.html

...