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