NAME
getgroups, setgroups - get/set list of supplementary group
IDs
SYNOPSIS
#include <unistd.h>
int getgroups(int size, gid_t list[]);
#define __USE_BSD
#include <grp.h>
int setgroups(size_t size, const gid_t *list));
DESCRIPTION
getgroups
Up to size supplementary groups are returned in list.
If size is zero, list is not modified, but the total
number of supplementary groups for the process is
returned.
setgroups
Sets the supplementary groups for the process. Only
the super-user may use this function.
RETURN VALUE
getgroups
On success, the number of supplementary group IDs is
returned. On error, -1 is returned, and errno is set
appropriately.
setgroups
On success, zero is returned. On error, -1 is
returned, and errno is set appropriately.
ERRORS
EFAULT
list has an invalid address.
EPERM
For setgroups, the user is not the super-user.
EINVAL
For setgroups, size is greater than NGROUPS (32 for
Linux 2.0.32). For getgroups, size is less than the
number of supplementary group IDs, but is not zero.
CONFORMING TO
SVr4, SVID (issue 4 only; these calls were not present in
SVr3), X/OPEN, 4.3BSD. The getgroups function is in
POSIX.1. Since setgroups requires privilege, it is not
covered by POSIX.1.
BUGS
The __USE_BSD flag probably shouldn't be required for set-
groups.
SEE ALSO
initgroups(3), getgid(2), setgid(2)