Во 2-м издании «Язык программирования C» Керниган и Ричи они реализуют упрощенную версию команды UNIX ls
(раздел 8.6 ] "
вызовите open ()
, чтобы открыть каталог и
malloc ()
для выделения места для
Структура DIR
. Дескриптор файла
возвращенный open ()
затем сохраняется
в переменной fd
этого DIR
.
В Dirent
ничего не хранится.
компонент.
readdir ()
использует системный вызов
read ()
, чтобы получить следующий
(системно) запись в справочнике
открытый каталог и копирует так
получил номер inode и имя файла
в статическую структуру Dirent
(чтобы
который возвращается указателем). В
только информация, необходимая
readdir ()
- дескриптор файла.
хранится в структуре DIR
.
Теперь к моему вопросу : в чем смысл структуры DIR
? Если я правильно понимаю эту программу, компонент Dirent
из DIR
никогда не используется, так почему бы не заменить всю структуру файловым дескриптором и напрямую использовать open ()
и close ()
?
Спасибо.
Ps: Я знаю, что в современных системах UNIX read ()
больше не может использоваться в каталогах (I опробовал эту программу в Ubuntu 10.04), но я все же хочу убедиться, что не пропустил что-то важное в этом примере.