Где находится readdir в линуксе?

Я редактирую linux v2.18.8 (CentOS5), чтобы включить атрибуты файла для проекта для школы. Одна из вещей, которую мы должны реализовать как группа, — это список всех имен атрибутов (атрибуты — это текстовые файлы, хранящиеся в скрытых каталогах на том же уровне, что и файл).

Просто пример:

this.jpg — это файл в папке /Desktop/Testing. Когда вы добавляете настраиваемый атрибут пользователя, создается папка, содержащая эти атрибуты. Поэтому, если я добавлю атрибут «Creator» и у него будет значение «bob», вы получите каталог /Desktop/Testing/.this.jpg_attr/Creator (и если вы откроете Creator, его содержимое будет «bob»).

Мне интересно перечислить все созданные пользователем атрибуты в папке атрибутов (или, например, все файлы в /Desktop/Testing/.this.jpg_attr/). Я знаю, что хочу использовать вызов readdir, но я не знаю, где его найти в настройках Linux. Если бы кто-нибудь мог дать мне какие-либо указания относительно того, где искать readdir, я думаю, что смогу понять, как им манипулировать.

Я НЕ ПРОШУ КОД. ТОЛЬКО ПУТЬ К ФАЙЛУ ДЛЯ READDIR ИЛИ СИСТЕМНЫЙ ВЫЗОВ, КОТОРЫЙ ВЫЗЫВАЕТ READDIR.

Заранее спасибо.


person NuGy    schedule 28.11.2011    source источник


Ответы (2)


Не совсем понятно, что вы имеете в виду. Функция readdir, которую вы хотите использовать, является частью стандартной библиотеки и будет подключена автоматически.

Возможно, вы спрашиваете, как включить заголовочный файл, объявляющий readdir. В этом случае:

#include <dirent.h>

Вы можете получить больше информации о функции readdir с помощью этой команды:

man 3 readdir
person rob mayoff    schedule 28.11.2011
comment
Кажется, теперь я понимаю... Я смотрел на все это неправильно... Большое спасибо за разъяснения, ха-ха. - person NuGy; 28.11.2011
comment
Существует низкоуровневый системный вызов readdir, но он специфичен для Linux и не имеет простого способа его вызвать. Вы хотите использовать вызов переносимой библиотеки POSIX readdir, который определен в dirent.h. - person rob mayoff; 28.11.2011

Системный вызов — getdents(2), однако вы должны продолжать использовать оболочку readdir для переносимости.

person Matt Joiner    schedule 28.11.2011