Книга: Linux программирование в примерах

5.3.1.2. Элементы каталогов Linux и BSD

5.3.1.2. Элементы каталогов Linux и BSD

Хотя мы только что сказали, что вам следует использовать лишь члены d_ino и d_name структуры struct dirent, стоит знать о члене d_type в struct dirent BSD и Linux. Это значение unsigned char, в котором хранится тип файла, имя которого находится в элементе каталога:

struct dirent {
 ...
 ino_t d_ino;          /* Как ранее */
 char d_name[...];     /* Как ранее */
 unsigned char d_type; /* Linux и современная BSD */
 ...
};
d_type
может принимать любые значения, описанные в табл. 5.1.

Таблица 5.1. Значения для d_type

Имя Значение
DT_BLK Файл блочного устройства
DT_CHR Файл символьного устройства
DT_DIR Каталог
DT_FIFO FIFO или именованный канал
DT_LNK Символическая ссылка
DT_REG Обычный файл
DT_SOCK Сокет
DT_UNKNOWN Неизвестный тип файла
DT_WHT Нет элемента (только системы BSD)

Знание типа файла просто путем чтения элемента каталога очень удобно; это может сэкономить на возможно дорогом системном вызове stat(). (Вызов stat() вскоре будет описан в разделе 5.4.2 «Получение информации о файле».)

Оглавление книги


Генерация: 1.728. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз