Scroll to navigation

GETGRENT(3) Podręcznik programisty Linuksa GETGRENT(3)

NAZWA

getgrent, setgrent, endgrent - odczytanie wpisu z pliku grup

SKŁADNIA

#include <sys/types.h>
#include <grp.h>
struct group *getgrent(void);
void setgrent(void);
void endgrent(void);


Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

setgrent():

_XOPEN_SOURCE >= 500 || /* Od glibc 2.19: */ _DEFAULT_SOURCE || /* Glibc w wersji <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

getgrent(), endgrent():

Od glibc 2.22: _XOPEN_SOURCE >= 500 || _DEFAULT_SOURCE
Glibc 2.21 i wcześniejsze _XOPEN_SOURCE >= 500 || /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* Wersje glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

OPIS

Funkcja getgrent() zwraca wskaźnik do struktury, zawierającej poszczególne rekordy bazy danych o grupach (na przykład z lokalnego pliku grup /etc/group, NIS-a lub LDAP-a). Podczas pierwszego wywołania getgrent() zwracany jest pierwszy wpis; później zwracane są kolejne.

Funkcja setgrent() przesuwa wskaźnik pliku na początek bazy danych o grupach, umożliwiając jej ponowne przetwarzanie.

Funkcja endgrent() jest używana do zamknięcia bazy danych o grupach po zakończeniu jej przetwarzania.

Strukturę group zdefiniowano w <grp.h> następująco:


struct group {
    char   *gr_name;      /* nazwa grupy */
    char   *gr_passwd;    /* hasło grupy */
    gid_t   gr_gid;       /* identyfikator grupy */
    char  **gr_mem;       /* zakończona NULL-em tablica wskaźników
                             do nazw członków grupy */
};


Więcej informacji o polach w tej strukturze można znaleźć w podręczniku group(5).

WARTOŚĆ ZWRACANA

Funkcja getgrent() zwraca wskaźnik do struktury group lub NULL, gdy nie ma więcej wpisów lub gdy wystąpił błąd.

W przypadku wystąpienia błędu może ustawić odpowiednią wartość zmiennej errno. Aby móc sprawdzić errno po wywołaniu tej funkcji, należy ją przed wywołaniem ustawić na zero.

Zwrócona wartość może wskazywać na statyczny obszar, który może być nadpisany przez kolejne wywołania getgrent(), getgrgid(3) lub getgrnam(3). (Zwróconego wskaźnika nie należy przekazywać do funkcji free(3)).

BŁĘDY

EAGAIN
Usługa była czasowo niedostępna; proszę spróbować ponownie później. W przypadku używania usług NSS w glibc wskazuje to na tymczasowy błąd komunikacji z usługą NSS. Problem może się sam rozwiązać, sugerowane jest późniejsze ponowne spróbowanie.
EINTR
Przechwycono sygnał, patrz signal(7).
EIO
Błąd wejścia/wyjścia.
EMFILE
Zostało osiągnięte ograniczenie na liczbę otwartych deskryptorów plików dla procesu.
ENFILE
Zostało osiągnięte systemowe ograniczenie na całkowitą liczbę otwartych plików.
ENOENT
Nie można było znaleźć wymaganego pliku wejściowego bazy danych. W przypadku używania usług NSS w glibc oznacza to, że nie zostały poprawnie skonfigurowane.
ENOMEM
Zabrakło pamięci na przydzielenie struktury group.
ERANGE
Przekazano niewystarczający bufor.

PLIKI

/etc/group
lokalny plik bazy grup

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs Atrybut Wartość
getgrent() Bezpieczeństwo wątkowe MT-Unsafe race:grent race:grentbuf locale
setgrent(), endgrent() Bezpieczeństwo wątkowe MT-Unsafe race:grent locale

W powyższej tabeli, grent w race:grent oznacza, że jeśli któraś z funkcji setgrent(), getgrent() lub endgrent() jest używana równolegle w różnych wątkach programu, może nastąpić sytuacja wyścigu danych.

ZGODNE Z

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

ZOBACZ TAKŻE

fgetgrent(3), getgrent_r(3), getgrgid(3), getgrnam(3), getgrouplist(3), putgrent(3), group(5)

O STRONIE

Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Robert Luberda <robert@debian.org>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres <manpages-pl-list@lists.sourceforge.net>.

15 września 2017 r.