getgroups(2) UNIX System V getgroups(2)
NAME
getgroups, setgroups - get or set supplementary group access list IDs
SYNOPSIS
#include <unistd.h>
int getgroups(int gidsetsize, gidt *grouplist)
int setgroups(int ngroups, const gidt *grouplist)
DESCRIPTION
getgroups gets the current supplemental group access list of the calling
process and stores the result in the array of group IDs specified by
grouplist. This array has gidsetsize entries and must be large enough to
contain the entire list. This list cannot be greater than {NGOUPSMAX}.
If gidsetsize equals 0, getgroups will return the number of groups to
which the calling process belongs without modifying the array pointed to
by grouplist.
setgroups sets the supplementary group access list of the calling process
from the array of group IDs specified by grouplist. The number of
entries is specified by ngroups and can not be greater than
{NGROUPSMAX}. This function may be invoked only by the super-user.
getgroups will fail if:
EINVAL The value of gidsetsize is non-zero and less than the
number of supplementary group IDs set for the calling
process.
setgroups will fail if:
EINVAL The value of ngroups is greater than {NGROUPSMAX}.
EPERM The effective user ID is not super-user.
Either call will fail if:
EFAULT A referenced part of the array pointed to by grouplist is
outside of the allocated address space of the process.
SEE ALSO
chown(2), getuid(2), setuid(2), initgroups(3C).
groups(1) in the User's Reference Manual.
DIAGNOSTICS
Upon successful completion, getgroups returns the number of supplementary
group IDs set for the calling process and setgroups returns the value 0.
Otherwise, a value of -1 is returned and errno is set to indicate the
error.
10/89 Page 1