[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Каталоги JFS2

Каталоги - это составная часть иерархической файловой системы. Они связывают имена файлов и подкаталогов с i-узлами. Глубина вложения каталогов не ограничивается. Дисковое пространство выделяется под каталоги блоками.

Процессы могут считывать содержимое каталогов так же, как содержимое обычных файлов. Однако запись в каталоги зарезервирована за ядром. По этой причине для создания и обслуживания каталогов разработаны специальные функции.

Дополнительная информация о каталогах приведена в следующих разделах:

Структура каталогов JFS2

Каталог представляет собой набор идентификаторов объектов. Считается, что эти объекты содержатся в каталоге. Длина всех идентификаторов одинакова. В идентификаторе содержатся номер i-узла, имя длиной до 22 байт, поле длины имени и поле продолжения идентификатора на случай, если имя файла не поместится в один идентификатор полностью.

Идентификаторы хранятся в каталоге в виде дерева B+, отсортированного по именам. Сведения о данном (.) и родительском (..) каталогах хранятся непосредственно в i-узле, а не в отдельных идентификаторах.

Можно устанавливать следующие режимы доступа к каталогам:

read Процессу разрешено чтение записей каталога
write Процессу разрешено создавать новые записи каталога или удалять старые с помощью функций creat, mknod, link и unlink
execute Процессу разрешено использовать данный каталог в качестве текущего рабочего каталога или выполнять поиск в нижестоящем дереве файлов

Работа с каталогами - Информация для программистов

Для создания каталогов предназначена процедура mkdir, для удаления каталогов - процедура rmdir.

Для работы с каталогами предназначены процедуры opendir, readdir, telldir, seekdir, rewinddir и closedir. Функция opendir возвращает указатель на структуру, которая используется функцией readdir для получения следующей записи каталога, функцией rewinddir - для установки указателя в файле на начало файла (при чтении), а функцией closedir - для закрытия каталога. Функция seekdir возвращается в позицию, полученную ранее с помощью функции telldir. В предыдущих версиях программы могли рассматривать каталоги как обычные файлы и работать с ними с помощью функций open, read, lseek и close. Теперь это не рекомендуется.

Изменение текущего каталога процесса

При загрузке системы текущим каталогом первого процесса становится корневой каталог корневой файловой системы. Новые процессы, создаваемые с помощью функции fork, наследуют текущий каталог родительского процесса. Для изменения текущего каталога процесса предназначена функция chdir.

Функция chdir выполняет синтаксический анализ имени каталога, проверяя, действительно ли целевой объект является каталогом и есть ли у владельца процесса права доступа к этому каталогу. После выполнения функции chdir процесс будет выполнять поиск всех полных имен, не начинающихся с косой черты (/), в новом текущем каталоге.

Изменение корневого каталога процесса

С помощью функции chroot процессы могут определять другой корневой каталог. Дочерние процессы вызывающего процесса рассматривают каталог, указанный функцией chroot, как логический корневой каталог файловой системы.

При анализе всех полных имен, начинающихся с / (косой черты), применяется глобальный корневой каталог файловой системы. Это означает, что поиск всех таких имен начинается с этого корневого каталога.

Функции управления каталогами

Файлы каталогов - это уникальные объекты, поэтому для управления каталогами разработаны специальные функции. Они перечислены ниже:

chdir Позволяет перейти в другой каталог
chroot Изменяет текущий корневой каталог
opendir,readdir, telldir, seekdir, rewinddir и closedir
  Выполняют различные действия над каталогами
getcwd и getwd Определяет путь к текущему каталогу
mkdir Создает каталог
rename Переименовывает каталог
rmdir Удаляет каталог

Связанная информация

Глава 5, Файловые системы и каталоги

Работа с i-узлами JFS

Работа с i-узлами JFS2

Создание связей

Создание связей - Информация для программистов


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]