.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getpwent_r 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ getpwent_r, fgetpwent_r \- получает запись из файла паролей (реентерабельные версии) .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint getpwent_r(struct passwd *restrict \fP\fIpwbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct passwd **restrict \fP\fIpwbufp\fP\fB);\fP \fBint fgetpwent_r(FILE *restrict \fP\fIstream\fP\fB, struct passwd *restrict \fP\fIpwbuf\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct passwd **restrict \fP\fIpwbufp\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBgetpwent_r\fP(), .nf начиная с glibc 2.19: _DEFAULT_SOURCE в glibc 2.19 и старее: _BSD_SOURCE || _SVID_SOURCE .fi .PP \fBfgetpwent_r\fP(): .nf начиная с glibc 2.19: _DEFAULT_SOURCE glibc 2.19 и старее: _SVID_SOURCE .fi .SH ОПИСАНИЕ Функции \fBgetpwent_r\fP() и \fBfgetpwent_r\fP() являются реентерабельными версиями \fBgetpwent\fP(3) и \fBfgetpwent\fP(3). Первая читает следующую запись паролей из потока, инициализированного \fBsetpwent\fP(3). Последняя читает следующую запись паролей из потока \fIstream\fP. .PP Структура \fIpasswd\fP определена в \fI\fP таким образом: .PP .in +4n .EX struct passwd { char *pw_name; /* имя пользователя */ char *pw_passwd; /* пароль пользователя */ uid_t pw_uid; /* идентификатор пользователя */ gid_t pw_gid; /* идентификатор группы */ char *pw_gecos; /* информация о пользователе */ char *pw_dir; /* домашний каталог */ char *pw_shell; /* программная оболочка */ }; .EE .in .PP Подробней о полях этой структуры смотрите в \fBpasswd\fP(5). .PP Нереентерабельные версии возвращают указатель на статическое хранилище, в котором хранятся другие указатели на имя пользователя, пароль, поле gecos, домашний каталог и оболочку. Реентерабельные функции, описанные здесь, возвращают всю информацию в буферах, предоставленных вызывающим. Основным буфером является \fIpwbuf\fP, в котором может храниться \fIstruct passwd\fP. В дополнительном буфере \fIbuf\fP размера \fIbuflen\fP могут храниться дополнительные строки. Результат этих функций, прочитанная из потока \fIstruct passwd\fP, сохраняется в предоставляемый буфер \fI*pwbuf\fP, и указатель на эту \fIstruct passwd\fP возвращается в \fI*pwbufp\fP. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении эти функции возвращают 0 и \fI*pwbufp\fP указывает на \fIstruct passwd\fP. При ошибке возвращается значение ошибки и \fI*pwbufp\fP равен NULL. .SH ОШИБКИ .TP \fBENOENT\fP Больше записей нет. .TP \fBERANGE\fP Недостаточно места в буфере. Попробуйте ещё раз с большим буфером. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Интерфейс Атрибут Значение T{ .na .nh \fBgetpwent_r\fP() T} Безвредность в нитях T{ .na .nh MT\-Unsafe race:pwent locale T} T{ .na .nh \fBfgetpwent_r\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 В приведённой выше таблице \fIpwent\fP в \fIrace:pwent\fP означает, что если в нескольких нитях программы одновременно используются функции \fBsetpwent\fP(), \fBgetpwent\fP(), \fBendpwent\fP() или \fBgetpwent_r\fP(), то может возникнуть состязательность по данным. .SH ВЕРСИИ Other systems use the prototype .PP .in +4n .EX struct passwd * getpwent_r(struct passwd *pwd, char *buf, int buflen); .EE .in .PP или, лучше, .PP .in +4n .EX int getpwent_r(struct passwd *pwd, char *buf, int buflen, FILE **pw_fp); .EE .in .SH СТАНДАРТЫ None. .SH ИСТОРИЯ These functions are done in a style resembling the POSIX version of functions like \fBgetpwnam_r\fP(3). .SH ЗАМЕЧАНИЯ Функция \fBgetpwent_r\fP() не совсем реентерабельна, так как она использует общую позицию чтения в потоке с другими нитями. .SH ПРИМЕРЫ .\" SRC BEGIN (getpwent_r.c) .EX #define _GNU_SOURCE #include #include #include #include \& #define BUFLEN 4096 \& int main(void) { struct passwd pw; struct passwd *pwp; char buf[BUFLEN]; int i; \& setpwent(); while (1) { i = getpwent_r(&pw, buf, sizeof(buf), &pwp); if (i) break; printf("%s (%jd)\etHOME %s\etSHELL %s\en", pwp\->pw_name, (intmax_t) pwp\->pw_uid, pwp\->pw_dir, pwp\->pw_shell); } endpwent(); exit(EXIT_SUCCESS); } .EE .\" perhaps add error checking - should use strerror_r .\" #include .\" #include .\" if (i) { .\" if (i == ENOENT) .\" break; .\" printf("getpwent_r: %s", strerror(i)); .\" exit(EXIT_SUCCESS); .\" } .\" SRC END .SH "СМ. ТАКЖЕ" \fBfgetpwent\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3), \fBgetpwnam\fP(3), \fBgetpwuid\fP(3), \fBputpwent\fP(3), \fBpasswd\fP(5) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , 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 .