Scroll to navigation

getgrnam(3) Library Functions Manual getgrnam(3)

NUME

getgrnam, getgrnam_r, getgrgid, getgrgid_r - obțin intrarea din fișierul de grup

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <sys/types.h>
#include <grp.h>
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);
int getgrnam_r(const char *restrict name, struct group *restrict grp,
               char buf[restrict .buflen], size_t buflen,
               struct group **restrict result);
int getgrgid_r(gid_t gid, struct group *restrict grp,
               char buf[restrict .buflen], size_t buflen,
               struct group **restrict result);

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

getgrnam_r(), getgrgid_r():


_POSIX_C_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE

Funcția getgrnam() returnează un indicator către o structură care conține câmpurile defalcate ale înregistrării din baza de date a grupului (de exemplu, fișierul de grup local /etc/group, NIS și LDAP) care corespunde numelui de grup name.

Funcția getgrgid() returnează un indicator către o structură care conține câmpurile defalcate ale înregistrării din baza de date a grupului care corespunde ID-ului grupului gid.

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

Funcțiile getgrnam_r() și getgrgid_r() obțin aceleași informații ca și getgrnam() și getgrgid(), dar stochează structura group recuperată în spațiul indicat de grp. Câmpurile de șiruri de caractere indicate de membrii structurii group sunt stocate în memoria tampon buf de dimensiune buflen. În *result se stochează un indicator la rezultat (în caz de succes) sau NULL (în cazul în care nu s-a găsit nici o intrare sau a apărut o eroare).

Apelarea


sysconf(_SC_GETGR_R_SIZE_MAX)

returnează fie -1, fără a modifica errno, fie o dimensiune inițială sugerată pentru buf; (dacă această dimensiune este prea mică, apelul eșuează cu ERANGE, caz în care apelantul poate încerca din nou cu o memorie tampon mai mare).

VALOAREA RETURNATĂ

Funcțiile getgrnam() și getgrgid() returnează un indicator la o structură group sau NULL dacă nu se găsește intrarea corespunzătoare sau dacă apare o eroare. În cazul în care apare o eroare, errno este configurată pentru a indica eroarea. Dacă se dorește verificarea lui errno după apel, acesta 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(3), getgrgid() sau getgrnam(). Nu treceți indicatorul returnat la free(3) !

În caz de succes, getgrnam_r() și getgrgid_r() returnează zero și stabilesc *result la grp. În cazul în care nu s-a găsit nicio înregistrare de grup corespunzătoare, aceste funcții returnează 0 și stochează NULL în *result. În caz de eroare, se returnează un număr de eroare și se stochează NULL în *result.

ERORI-IEȘIRE

0 sau ENOENT sau ESRCH sau EBADF sau EPERM sau EPERM sau ...
Argumentul name sau gid dat nu a fost găsit.
A fost captat un semnal; a se vedea signal(7).
Eroare de In/Ieș.
Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă.
Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.
Memorie insuficientă pentru alocarea structurii group.
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
getgrnam() Siguranța firelor MT-Unsafe race:grnam locale
getgrgid() Siguranța firelor MT-Unsafe race:grgid locale
getgrnam_r(), getgrgid_r() Siguranța firelor MT-Safe locale

VERSIUNI

Formularea prezentată mai sus la „VALOAREA RETURNATĂ” este din POSIX.1. Acesta nu numește „not found” (nu se găsește) o eroare, prin urmare nu specifică ce valoare ar putea avea errno în această situație. Dar acest lucru face imposibilă recunoașterea erorilor. S-ar putea argumenta că, în conformitate cu POSIX, errno ar trebui lăsată neschimbată dacă nu se găsește o intrare. Experimentele pe diferite sisteme de tip UNIX arată că în această situație apar o mulțime de valori diferite: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM și probabil altele.

STANDARDE

POSIX.1-2008.

ISTORIC

POSIX.1-2001, SVr4, 4.3BSD.

CONSULTAȚI ȘI

endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3), group(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.

20 iulie 2023 Pagini de manual de Linux 6.05.01