getgrent(3)

NUME
getgrent, setgrent, endgrent - obține intrarea din fișierul de grup

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/types.h>
#include <grp.h>

struct group *getgrent(void);

void setgrent(void);
void endgrent(void);

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

setgrent():
    _XOPEN_SOURCE >= 500
        || /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

getgrent(), endgrent():
     Începând cu glibc 2.22:
        _XOPEN_SOURCE >= 500 || _DEFAULT_SOURCE
    glibc 2.21 și versiunile anterioare
        _XOPEN_SOURCE >= 500
            || /* Începând cu glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
            || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE
Funcția getgrent() returnează un indicator către o structură care conține câmpurile defalcate ale unei înregistrări din baza de date de grupuri (de exemplu, fișierul de grup local /etc/group, NIS și LDAP). Prima dată când este apelată getgrent(), aceasta returnează prima intrare; ulterior, returnează intrări succesive.

Funcția setgrent() revine la începutul bazei de date a grupului, pentru a permite scanări repetate.

Funcția endgrent() este utilizată pentru a închide baza de date a grupului după ce a fost efectuată toată prelucrarea.

Structura group este definită în <grp.h> după cum urmează:

    struct group {
        char   *gr_name;        /* numele grupului */
        char   *gr_passwd;      /* parola grupului */
        gid_t   gr_gid;         /* identificatorul grupului */
        char  **gr_mem;         /* vector de indicatori cu terminație NULL
                                   la numele membrilor grupului */
    };

Pentru mai multe informații despre câmpurile acestei structuri, a se vedea group(5).

VALOAREA RETURNATĂ
Funcția getgrent() returnează un indicator la o structură group sau NULL dacă nu mai există intrări sau dacă apare o eroare.

În caz de eroare, se poate configura errno. Dacă se dorește verificarea lui errno după apel, aceasta trebuie să fie fixată la zero înainte de apel.

Valoarea de returnare poate indica o zonă statică și poate fi suprascrisă de apelurile ulterioare la getgrent(), getgrgid(3) sau getgrnam(3); (nu pasează indicatorul returnat către free(3).)

ERORI

EAGAIN
    Serviciul a fost temporar indisponibil; încercați din nou mai târziu. Pentru serviciile NSS din glibc, acest lucru indică o eroare temporară de comunicare cu aceste servicii. Eroarea se poate corecta de la sine; se sugerează să încercați din nou mai târziu.

EINTR
    A fost captat un semnal; a se vedea signal(7).

EIO Eroare de In/Ieș.

EMFILE
    Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă.

ENFILE
    Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.

ENOENT
    Nu poate fi găsit un fișier de intrare necesar. În cazul serviciilor NSS din glibc, acest lucru indică faptul că aceste servicii nu sunt configurate corect.

ENOMEM
    Memorie insuficientă pentru alocarea structurii group.

ERANGE
    Spațiul de memorie tampon furnizat este insuficient.

FIȘIERE

/etc/group
    fișier de bază de date a grupurilor locale

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
getgrent() | Siguranța firelor | MT-Unsafe race:grent race:grentbuf locale
setgrent(), endgrent() | Siguranța firelor | MT-Unsafe race:grent locale

În tabelul de mai sus, grent din race:grent semnifică faptul că, dacă oricare dintre funcțiile setgrent(), getgrent() sau endgrent() sunt utilizate în paralel în diferite fire de execuție ale unui program, pot apărea accesări concurente la date („data races”).

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001, SVr4, 4.3BSD.

CONSULTAȚI ȘI
fgetgrent(3), getgrent_r(3), getgrgid(3), getgrnam(3), getgrouplist(3), putgrent(3), group(5)

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

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.