Go to the previous, next section.
int getgroups(int size, gid_t list[]);
int setgroups(size_t size, const gid_t
*list);
size: [in] the maximum size of list.
list: (For getgroups) [out] the array where to put
the groups returned. (For setgroups) [in] the new supplemental
groups.
getgroups: up to size supplemental group entries of
the current task are returned in list. If size is zero, no
groups but instead the total number of supplemental groups is returned.
setgroups: sets the supplemental groups for the current task.
Only the superuser may call this function.
On success, for getgroups, the number of groups returned in
list is returned. If size is zero, then the number of
supplemental groups is returned. In the case of setgroups, zero is
returned on success.
On error, -1 is returned and errno is set to one of the
following values:
For both calls: EFAULT.
For setgroups:
EPERM: the current taks does not have superuser permission.
EINVAL: size is greater than the maximum possible
number of supplemental groups.