Provided by: manpages-ro-dev_4.27.0-1_all bug

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).
       ┌───────────────┬───────────────────┬───────────────────────────────────────────────────────────────────┐
       │ InterfațăAtributValoare                                                           │
       ├───────────────┼───────────────────┼───────────────────────────────────────────────────────────────────┤
       │ getpwent_r()  │ Siguranța firelor │ MT-Unsafe race:pwent locale                                       │
       ├───────────────┼───────────────────┼───────────────────────────────────────────────────────────────────┤
       │ fgetpwent_r() │ Siguranța firelor │ MT-Safe                                                           │
       └───────────────┴───────────────────┴───────────────────────────────────────────────────────────────────┘

       Î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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                    getpwent_r(3)