Книга: Программирование для 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()
.
- 5.3. Чтение каталогов
- 10.1.26. Чтение исходного текста программы
- Б.5. Другие низкоуровневые операции
- Глава 14 Операции с каталогами
- 14.4. Чтение содержимого каталога
- 10.1.31. Получение содержимого каталога
- Использование типов содержимого и столбцов
- 4.4.3. Чтение и запись
- Управление объединением содержимого узлов
- Создание столбцов и работа с типами содержимого
- Можно ли указать использование по умолчанию вместо C:Program Files другого каталога для установки программ?
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?