.\" -*- 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 "2 мая 2024 г." "Linux man\-pages 6.8" .SH ИМЯ readdir_r \- чтение содержимого каталога .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \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 .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBreaddir_r\fP(): .nf _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH ОПИСАНИЕ Эта функция устарела; вместо неё используйте \fBreaddir\fP(3). .P Функция \fBreaddir_r\fP() является реентерабельной версией \fBreaddir\fP(3). Она читает следующий элемент каталога из потока каталога \fIdirp\fP и возвращает его в выделенный вызывающим буфер, на который указывает \fIentry\fP. Описание структуры \fIdirent\fP смотрите в \fBreaddir\fP(3). .P Указатель на возвращаемый буфер помещается в \fI*result\fP; если достигнут конец потока каталога, то в \fI*result\fP возвращается NULL.. .P 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 .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 Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .