getgroups

Autres langues

Langue: pl

Autres versions - même langue

Version: 1997-12-10 (openSuse - 09/10/07)

Section: 2 (Appels système)

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

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)