Man page - readdir_r(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

readdir_r

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

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).

Image grohtml-619442-1.png

СТАНДАРТЫ

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .