Книга: Программирование для Linux. Профессиональный подход

Б.6. Чтение содержимого каталога

Б.6. Чтение содержимого каталога

В Linux имеются функции, предназначенные для чтения содержимого каталога. И хотя они не относятся к низкоуровневым функциям, мы все же решили их описать, так как они широко применяются в программах.

При чтении содержимого каталога необходимо придерживаться такой последовательности действий.

1. Вызовите функцию opendir(), передав ей путевое имя требуемого каталога. Эта функция возвращает дескриптор типа DIR*, который можно использовать для доступа к содержимому каталога. В случае ошибки возвращается NULL.

2. Последовательно вызывайте функцию readdir(), передавая ей дескриптор, полученный от функции opendir(). Всякий раз функция readdir() будет возвращать указатель на структуру типа dirent, содержащую информацию о следующем элементе каталога. По достижении конца каталога будет получено значение NULL. У структуры dirent есть поле d_name, где содержится имя элемента каталога.

3. Вызовите функцию closedir(), передав ей имеющийся дескриптор, чтобы завершить сеанс работы с каталогом.

Для использования перечисленных функций необходимо включить в программу файлы <sys/types.h> и <dirent.h>. Ответственность за сортировку содержимого каталога возлагается на программу.

В листинге Б.8 показана программа отображающая список содержимого каталога. Имя каталога задается в командной строке. Если этого не сделать, будет проанализирован текущий каталог. Для каждого элемента каталога отображается его тип и путевое имя. Функция get_file_type() определяет тип объекта файловой системы с помощью функции lstat().

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


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