NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | USAGE | ATTRIBUTES | SEE ALSO
#include <unistd.h>int getgroups(int gidsetsize, gid_t *grouplist);
The getgroups() function 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 larger than NGROUPS_MAX . 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 .
The setgroups() function 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 NGROUPS_MAX .
Upon successful completion, getgroups() returns the number of supplementary group IDs set for the calling process and setgroups() returns 0 . Otherwise, -1 is returned and errno is set to indicate the error.
The getgroups() and setgroups() functions will fail if:
A referenced part of the array pointed to by grouplist is an illegal address.
The getgroups() function will fail if:
The value of gidsetsize is non-zero and less than the number of supplementary group IDs set for the calling process.
The setgroups() function will fail if:
The value of ngroups is greater than NGROUPS_MAX .
The effective user of the calling process is not super-user.
This function may be invoked only by the super-user.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
MT-Level | Async-Signal-Safe |
groups(1) , chown(2) , getuid(2) , setuid(2) , getgrnam(3C) , initgroups(3C) , attributes(5)
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | USAGE | ATTRIBUTES | SEE ALSO