Man page - fgetpwent_r(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

getpwent_r

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
ATRIBUTE
VERSIUNI
STANDARDE
ISTORIC
NOTE
EXEMPLE
CONSULTAȚI ȘI
TRADUCERE

NUME

getpwent_r, fgetpwent_r - obține intrarea din fișierul passwd în mod reentrant

BIBLIOTECA

Biblioteca C standard ( libc , -lc )

SINOPSIS

#include <pwd.h>

int getpwent_r(struct passwd *restrict pwbuf ,
char
buf [restrict . buflen ], size_t buflen ,
struct passwd **restrict
pwbufp );
int fgetpwent_r(FILE *restrict
stream , struct passwd *restrict pwbuf ,
char
buf [restrict . buflen ], size_t buflen ,
struct passwd **restrict
pwbufp );

Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros (7)):

getpwent_r (),
Începând cu glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 și versiunile anterioare:
_BSD_SOURCE || _SVID_SOURCE

fgetpwent_r ():
Începând cu glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 și versiunile anterioare:
_SVID_SOURCE

DESCRIERE

Funcțiile getpwent_r () și fgetpwent_r () sunt versiunile reentrante ale getpwent (3) și fgetpwent (3). Prima citește următoarea intrare passwd din fluxul inițializat de setpwent (3). Cea de-a doua citește următoarea intrare passwd din stream .

Structura passwd este definită în <pwd.h> după cum urmează:

struct passwd {
char *pw_name; /* nume utilizator */
char *pw_passwd; /* parolă utilizator */
uid_t pw_uid; /* ID utilizator */
gid_t pw_gid; /* ID grup */
char *pw_gecos; /* informații utilizator */
char *pw_dir; /* directorul personal */
char *pw_shell; /* program shell */
};

Pentru mai multe informații despre câmpurile acestei structuri, consultați passwd (5).

Funcțiile nereentrante returnează un indicator către o memorie statică, unde această memorie statică conține alți indicatori pentru numele de utilizator, parola, câmpul gecos, directorul principal și shell-ul. Funcțiile reentrante descrise aici returnează toate acestea în memorii tampon furnizate de apelant. În primul rând, există memoria tampon pwbuf care poate conține o struct passwd . Și apoi memoria tampon buf de dimensiune buflen care poate conține șiruri de caractere suplimentare. Rezultatul acestor funcții, struct passwd citit din flux, este stocat în memoria tampon furnizată *pwbuf , iar un indicator la această struct passwd este returnat în *pwbufp .

VALOAREA RETURNATĂ

În caz de succes, aceste funcții returnează 0, iar *pwbufp este un indicator la struct passwd . În caz de eroare, aceste funcții returnează o valoare de eroare, iar *pwbufp este NULL.

ERORI-IEȘIRE

ENOENT

Nu mai există alte intrări.

ERANGE

Spațiu de memorie tampon furnizat insuficient. Încercați din nou cu o memorie tampon mai mare.

ATRIBUTE

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes (7).

Image grohtml-655786-1.png

În tabelul de mai sus, pwent din race:pwent semnifică faptul că, dacă oricare dintre funcțiile setpwent (), getpwent (), endpwent () sau getpwent_r () sunt utilizate în paralel în diferite fire de execuție ale unui program, atunci pot apărea competiții de date.

VERSIUNI

Alte sisteme utilizează prototipul

struct passwd *
getpwent_r(struct passwd *pwd, char *buf, int buflen);

sau, mai bine zis,

int
getpwent_r(struct passwd *pwd, char *buf, int buflen,
FILE **pw_fp);

STANDARDE

Niciunul.

ISTORIC

Aceste funcții sunt realizate într-un stil asemănător cu versiunea POSIX a unor funcții precum getpwnam_r (3).

NOTE

Funcția getpwent_r () nu este cu adevărat reentrantă, deoarece împarte poziția de citire în flux cu toate celelalte fire de execuție.

EXEMPLE

#define _GNU_SOURCE
#include <pwd.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#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);
}

CONSULTAȚI ȘI

fgetpwent (3), getpw (3), getpwent (3), getpwnam (3), getpwuid (3), putpwent (3), passwd (5)

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net .