getpwent_r(3) Library Functions Manual getpwent_r(3) NUME getpwent_r, fgetpwent_r - obine intrarea din fiierul passwd in mod reentrant BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int getpwent_r(struct passwd *restrict pwbuf, char buf[restrict .size], size_t size, struct passwd **restrict pwbufp); int fgetpwent_r(FILE *restrict stream, struct passwd *restrict pwbuf, char buf[restrict .size], size_t size, struct passwd **restrict pwbufp); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): getpwent_r(), Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _BSD_SOURCE || _SVID_SOURCE fgetpwent_r(): Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _SVID_SOURCE DESCRIERE Funciile getpwent_r() i fgetpwent_r() sunt versiunile reentrante ale getpwent(3) i fgetpwent(3). Prima citete urmatoarea intrare passwd din fluxul iniializat de setpwent(3). Cea de-a doua citete urmatoarea intrare passwd din stream. Structura passwd este definita in dupa cum urmeaza: struct passwd { char *pw_name; /* nume utilizator */ char *pw_passwd; /* parola utilizator */ uid_t pw_uid; /* ID utilizator */ gid_t pw_gid; /* ID grup */ char *pw_gecos; /* informaii utilizator */ char *pw_dir; /* directorul personal */ char *pw_shell; /* program shell */ }; Pentru mai multe informaii despre campurile acestei structuri, consultai passwd(5). Funciile nereentrante returneaza un indicator catre o memorie statica, unde aceasta memorie statica conine ali indicatori pentru numele de utilizator, parola, campul gecos, directorul principal i shell-ul. Funciile reentrante descrise aici returneaza toate acestea in memorii tampon furnizate de apelant. In primul rand, exista memoria tampon pwbuf care poate conine o struct passwd. i apoi memoria tampon buf de dimensiune size care poate conine iruri de caractere suplimentare. Rezultatul acestor funcii, struct passwd citit din flux, este stocat in memoria tampon furnizata *pwbuf, iar un indicator la aceasta struct passwd este returnat in *pwbufp. VALOAREA RETURNATA In caz de succes, aceste funcii returneaza 0, iar *pwbufp este un indicator la struct passwd. In caz de eroare, aceste funcii returneaza o valoare de eroare, iar *pwbufp este NULL. ERORI-IEIRE ENOENT Nu mai exista alte intrari. ERANGE Spaiu de memorie tampon furnizat insuficient. Incercai din nou cu o memorie tampon mai mare. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------+---------------------+---------------------------------+ |Interfaa | Atribut | Valoare | +--------------+---------------------+---------------------------------+ |getpwent_r() | Sigurana firelor | MT-Unsafe race:pwent locale | +--------------+---------------------+---------------------------------+ |fgetpwent_r() | Sigurana firelor | MT-Safe | +--------------+---------------------+---------------------------------+ In tabelul de mai sus, pwent din race:pwent semnifica faptul ca, daca oricare dintre funciile setpwent(), getpwent(), endpwent() sau getpwent_r() sunt utilizate in paralel in diferite fire de execuie ale unui program, atunci pot aparea competiii de date. VERSIUNI Alte sisteme utilizeaza prototipul struct passwd * getpwent_r(struct passwd *pwd, char buf[.size], int size); sau, mai bine zis, int getpwent_r(struct passwd *pwd, char buf[.size], int size, FILE **pw_fp); STANDARDE Niciunul. ISTORIC Aceste funcii sunt realizate intr-un stil asemanator cu versiunea POSIX a unor funcii precum getpwnam_r(3). NOTE Funcia getpwent_r() nu este cu adevarat reentranta, deoarece imparte poziia de citire in flux cu toate celelalte fire de execuie. EXEMPLE #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)\tHOME %s\tSHELL %s\n", pwp->pw_name, (intmax_t) pwp->pw_uid, pwp->pw_dir, pwp->pw_shell); } endpwent(); exit(EXIT_SUCCESS); } CONSULTAI I fgetpwent(3), getpw(3), getpwent(3), getpwnam(3), getpwuid(3), putpwent(3), passwd(5) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.12 24 decembrie 2024 getpwent_r(3)