Интерфейс K&R для чтения каталогов: лишняя структура DIR?

Во 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), но я все же хочу убедиться, что не пропустил что-то важное в этом примере.

    5
    задан qfab 17 September 2010 в 22:16
    поделиться