Книга: Linux программирование в примерах
5.1.2. Содержимое каталога
5.1.2. Содержимое каталога
Каталоги устанавливают связь между именем файла и индексом. Элементы каталога содержат номер индекса и имя файла. Они содержат также дополнительную учетную информацию, которая нам здесь не интересна. См. рис. 5.2.
Рис. 5.2. Концептуальное содержание каталога
На ранних Unix-системах были двухбайтные номера индексов, а имена файлов — до 14 байтов. Вот полное содержание файла V7 /usr/include/sys/dir.h
:
#ifndef DIRSIZ
определен в V7
#define DIRSIZ 14
#endif
struct direct {
ino_t d_ino;
char d_name[DIRSIZ];
};
ino_t<sys/types.h>
как 'typedef unsigned int into_t;
'. Поскольку на PDP-11 int
является 16-разрядным, таким же является и ino_t
. Такая организация упрощала непосредственное чтение каталогов; поскольку размер элемента был фиксирован, код был простым. (Единственно, за чем нужно было следить, это то, что полное 14-символьное d_name
не завершалось символом NUL.)
Управление содержанием каталога для системы также было простым. Когда файл удалялся из каталога, система заменяла номер индекса двоичным нулем, указывая, что элемент каталога не используется. Новые файлы могли потом использовать пустой элемент повторно. Это помогало поддерживать размер самих файлов каталогов в приемлемых рамках. (По соглашению, номер индекса 1 не используется; первым используемым индексом всегда является 2. Дополнительные сведения приведены в разделе 8.1 «Монтирование и демонтирование файловых систем».)
Современные системы предоставляют длинные имена файлов. Каждый элемент каталога имеет различную длину, с обычным ограничением для компонента имени файла каталога в 255 байтов. Далее мы увидим, как читать на современных системах содержимое каталога. Также в современных системах номера индексов 32 (или даже 64!) разрядные.
- 5.1. Просмотр содержимого каталога
- Глава 18 Стандартные каталоги Windows и их содержимое
- 1.4.4. Работа с файлами и каталогами с помощью оболочки GNOME
- Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста
- Можно ли указать использование по умолчанию вместо C:Program Files другого каталога для установки программ?
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?
- Листинг 4.2. Содержимое конфигурационного файла
- Листинг 10.3. Содержимое файла
- Листинг 12.4. Содержимое файла
- Листинг 14.3. Содержимое файла
- Удаление ключа из вашего каталога ключей.
- Концепции активного каталога