readdir_r()

Получить указатель на следующую запись каталога

Прототип:

#include <sys/types.h>
#include <dirent.h>
int readdir_r( DIR *dirp,
struct dirent *entry,
struct dirent **result );

Аргументы:

dirp
Указатель на поток каталога для чтения.
entry
Указатель на структуру dirent, в которой функция может хранить запись каталога.
result
Адрес буфера, где функция может хранить указатель на найденную информацию.

Библиотека:

libc

Описание:

Если определено _POSIX_THREAD_SAFE_FUNCTIONS, readdir_r() инициализирует структуру dirent, на которую ссылается entryзаписью каталога в текущей позиции в потоке каталога, на который ссылается dirp, и хранит указатель на эту структуру в result.

Область памяти, на которую указывает entry должна быть достаточно большой, чтобы вместить структуру dirent с массивом символов s_name состоящим из как минимум NAME_MAX+1 элементов.


Note: Структура dirent не предоставляет ресурс для хранения пути; вы должны предоставить его самостоятельно. Например:

struct dirent *entry = malloc( offsetof( struct dirent, d_name ) + NAME_MAX + 1 );


Возвращаемое значение:

EOK
Успешное завершение.
EBADF
Аргумент dirp не относится к потоку открытого каталога.
EOVERFLOW
Одно из значений в возвращаемой структуре не может быть правильно представлено.

Классификация:

POSIX 1003.1 TSF

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

closedir(), struct dirent, errno, opendir(), readdir(), seekdir(), telldir(), rewinddir()




Предыдущий раздел: Описание API системной библиотеки