.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2008, 2016 Michael Kerrisk .\" and Copyright (C) 2016 Florian Weimer .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH readdir_r 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ readdir_r \- чтение содержимого каталога .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fB[[deprecated]] int readdir_r(DIR *restrict \fP\fIdirp\fP\fB,\fP \fB struct dirent *restrict \fP\fIentry\fP\fB,\fP \fB struct dirent **restrict \fP\fIresult\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBreaddir_r\fP(): .nf _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH ОПИСАНИЕ Эта функция устарела; вместо неё используйте \fBreaddir\fP(3). .PP Функция \fBreaddir_r\fP() является реентерабельной версией \fBreaddir\fP(3). Она читает следующий элемент каталога из потока каталога \fIdirp\fP и возвращает его в выделенный вызывающим буфер, на который указывает \fIentry\fP. Описание структуры \fIdirent\fP смотрите в \fBreaddir\fP(3). .PP Указатель на возвращаемый буфер помещается в \fI*result\fP; если достигнут конец потока каталога, то в \fI*result\fP возвращается NULL.. .PP It is recommended that applications use \fBreaddir\fP(3) instead of \fBreaddir_r\fP(). Furthermore, since glibc 2.24, glibc deprecates \fBreaddir_r\fP(). The reasons are as follows: .IP \[bu] 3 В системах, у которых значение \fBNAME_MAX\fP не определено, вызов \fBreaddir_r\fP() может быть небезопасным, так как интерфейс не позволяет вызывающему задать длину буфера, который используется для возврата элемента каталога. .IP \[bu] В некоторых системах \fBreaddir_r\fP() не может прочитать элементы каталога с очень длинными именами. Когда реализации glibc встречается такое имя, вызов \fBreaddir_r\fP() завершается с ошибкой \fBENAMETOOLONG\fP \fIтолько после чтения последнего элемента каталога\fP. В других системах \fBreaddir_r\fP() может выполняться без ошибок, но возвращаемое поле \fId_name\fP может не завершаться null или может быть обрезанным. .IP \[bu] В текущей спецификации POSIX.1 (POSIX.1\-2008), от \fBreaddir\fP(3) не требуется быть нитебезопасной. Однако в современных реализациях (включая glibc) параллельные вызовы \fBreaddir\fP(3) для различных потоков каталога являются нитебезопасными. Поэтому использовать \fBreaddir_r\fP() в многонитевых программах, обычно, не требуется. В случаях, когда несколько нитей должны читать один поток каталога, всё равно предпочтительней использовать \fBreaddir\fP(3) с внешней синхронизацией, а не \fBreaddir_r\fP(), по причинам, описанным выше. .IP \[bu] .\" FIXME . .\" http://www.austingroupbugs.net/view.php?id=696 Ожидается, что в будущей версии POSIX.1 функция \fBreaddir_r\fP() будет помечена как устаревшая, а для \fBreaddir\fP(3) будет требоваться нитебезопасность при одновременной работе с разными потоками каталога. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении функция \fBreaddir_r\fP() возвращает 0. При ошибке она возвращает положительный номер ошибки (перечислены в ОШИБКАХ). Если достигнут конец потока каталога, то \fBreaddir_r\fP() возвращает 0 и NULL в \fI*result\fP. .SH ОШИБКИ .TP \fBEBADF\fP Неверный дескриптор потока каталога \fIdirp\fP. .TP \fBENAMETOOLONG\fP Обнаружено слишком длинное имя элемента каталога для чтения. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBreaddir_r\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH "СМ. ТАКЖЕ" \fBreaddir\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , Баринов Владимир и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .