NAZWA¶
getgroups, setgroups - pobiera/ustawia listę identyfikatorów grup
dodatkowych
SKŁADNIA¶
#include <sys/types.h>
#include <unistd.h>
int getgroups(int size, gid_t list[]);
#include <grp.h>
int setgroups(size_t size, const gid_t
*list);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
- getgroups
- Zwraca w list maksymalnie size dodatkowych ID
grup. Nie jest określone, czy efektywny ID grupy procesu
wywołującego będzie znajdować się na
zwróconej liście. Tak więc, aplikacja powinna
wywołać również getegid(2) i dodać lub
usunąć otrzymaną wartość.) Jeśli size
jest równe zero, to list nie jest modyfikowane, lecz zwracana
jest ogólna liczba dodatkowych grup procesu.
- setgroups
- Ustawia dodatkowe grupy procesu. Jedynie
superużytkownik może tego dokonać.
WARTOŚĆ ZWRACANA¶
- getgroups
- po pomyślnym zakończeniu zwraca liczbę grup
dodatkowych. Po błędzie zwracane jest -1 i odpowiednio ustawiane
errno.
- setgroups
- po pomyślnym zakończeniu zwraca zero. Po
błędzie zwracane jest -1 i odpowiednio ustawiane
errno.
BŁĘDY¶
- EFAULT
- list ma nieprawidłowy adres.
- EPERM
- Dla setgroups, użytkownik nie jest
superużytkownikiem.
- EINVAL
- Dla setgroups, size jest większe
niż NGROUPS (32 dla Linuksa 2.0.32). Dla getgroups,
size jest mniejsze niż liczba grup dodatkowych, ale
niezerowe.
UWAGI¶
Proces może posiadać maksymalnie co najmniej NGROUPS_MAX grup
dodatkowych oprócz efektywnego ID grupy. Zbiór grup dodatkowych jest
dziedziczony po procesie rodzicielskim i może zostać zmieniony za
pomocą
setgroups. Maksymalna liczba grup dodatkowych może
być odczytana za pomocą
sysconf(3):
long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);
Maksymalna zwracana przez
getgroups wartość nie może
być większa niż powiększona o jeden wartość
otrzymana w powyższy sposób.
Prototyp dla
setgroups jest dostępny jedynie, gdy zdefiniowane jest
_BSD_SOURCE (bezpośrednio, albo pośrednio - nie
definiując _POSIX_SOURCE czy kompilując z włączoną
flagą -ansi).
ZGODNE Z¶
SVr4, SVID (tylko wydanie 4; wywołań tych nie było w SVr3),
X/OPEN, 4.3BSD. Funkcja
getgroups istnieje w POSIX.1. Ponieważ
setgroups wymaga przywilejów, nie jest opisana w POSIX.1.
ZOBACZ TAKŻE¶
initgroups(3),
getgid(2),
setgid(2)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 2 getgroups
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.