Provided by: manpages-ru-dev_4.26.0-1_all 

НАИМЕНОВАНИЕ
readdir_r - чтение содержимого каталога
БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)
ОБЗОР
#include <dirent.h>
[[deprecated]] int readdir_r(DIR *restrict dirp,
struct dirent *restrict entry,
struct dirent **restrict result);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
readdir_r():
_POSIX_C_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
ОПИСАНИЕ
Эта функция устарела; вместо неё используйте readdir(3).
Функция readdir_r() является реентерабельной версией readdir(3). Она читает следующий элемент каталога из
потока каталога dirp и возвращает его в выделенный вызывающим буфер, на который указывает entry. Описание
структуры dirent смотрите в readdir(3).
Указатель на возвращаемый буфер помещается в *result; если достигнут конец потока каталога, то в *result
возвращается NULL..
It is recommended that applications use readdir(3) instead of readdir_r(). Furthermore, since glibc
2.24, glibc deprecates readdir_r(). The reasons are as follows:
• В системах, у которых значение NAME_MAX не определено, вызов readdir_r() может быть небезопасным, так
как интерфейс не позволяет вызывающему задать длину буфера, который используется для возврата элемента
каталога.
• В некоторых системах readdir_r() не может прочитать элементы каталога с очень длинными именами. Когда
реализации glibc встречается такое имя, вызов readdir_r() завершается с ошибкой ENAMETOOLONG только
после чтения последнего элемента каталога. В других системах readdir_r() может выполняться без ошибок,
но возвращаемое поле d_name может не завершаться null или может быть обрезанным.
• В текущей спецификации POSIX.1 (POSIX.1-2008), от readdir(3) не требуется быть нитебезопасной. Однако
в современных реализациях (включая glibc) параллельные вызовы readdir(3) для различных потоков
каталога являются нитебезопасными. Поэтому использовать readdir_r() в многонитевых программах, обычно,
не требуется. В случаях, когда несколько нитей должны читать один поток каталога, всё равно
предпочтительней использовать readdir(3) с внешней синхронизацией, а не readdir_r(), по причинам,
описанным выше.
• Ожидается, что в будущей версии POSIX.1 функция readdir_r() будет помечена как устаревшая, а для
readdir(3) будет требоваться нитебезопасность при одновременной работе с разными потоками каталога.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функция readdir_r() возвращает 0. При ошибке она возвращает положительный номер
ошибки (перечислены в ОШИБКАХ). Если достигнут конец потока каталога, то readdir_r() возвращает 0 и NULL
в *result.
ОШИБКИ
EBADF Неверный дескриптор потока каталога dirp.
ENAMETOOLONG
Обнаружено слишком длинное имя элемента каталога для чтения.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
│ Интерфейс │ Атрибут │ Значение │
├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
│ readdir_r() │ Безвредность в нитях │ MT-Safe │
└─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘
СТАНДАРТЫ
POSIX.1-2008.
ИСТОРИЯ
POSIX.1-2001.
СМОТРИТЕ ТАКЖЕ
readdir(3)
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Azamat Hackimov
<azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
<blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Баринов
Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. readdir_r(3)