getgroups(2) [osx man page]
GETGROUPS(2) BSD System Calls Manual GETGROUPS(2) NAME
getgroups -- get group access list SYNOPSIS
#include <unistd.h> int getgroups(int gidsetsize, gid_t grouplist[]); DESCRIPTION
getgroups() gets the current group access list of the current user process and stores it in the array grouplist[]. The parameter gidsetsize indicates the number of entries that may be placed in grouplist[]. getgroups() returns the actual number of groups returned in grouplist[]. However, no more than {NGROUPS_MAX} will be returned. If gidsetsize is 0, getgroups() returns the number of groups without modifying the grouplist[] array. Calling initgroups(3) to opt-in for supplementary groups will cause getgroups() to return a single entry, the GID that was passed to initgroups(3). To provide compatibility with applications that use getgroups() in environments where users may be in more than {NGROUPS_MAX} groups, a vari- ant of getgroups(), obtained when compiling with either the macros _DARWIN_UNLIMITED_GETGROUPS or _DARWIN_C_SOURCE defined, can be used that is not limited to {NGROUPS_MAX} groups. However, this variant only returns the user's default group access list and not the group list modi- fied by a call to setgroups(2) (either in the current process or an ancestor process). Use of setgroups(2) is highly discouraged, and there is no foolproof way to determine if it has been previously called. RETURN VALUES
A successful call returns the number of groups in the group set. Otherwise, a value of -1 is returned and the global integer variable errno is set to indicate the error. ERRORS
The possible errors for getgroups() are: [EFAULT] The argument grouplist specifies an invalid address. [EINVAL] The argument gidsetsize, although non-zero, is smaller than the number of groups in the group set. LEGACY SYNOPSIS
#include <sys/param.h> #include <sys/types.h> #include <unistd.h> The include files <sys/param.h> and <sys/types.h> are necessary. SEE ALSO
setgroups(2), initgroups(3), compat(5) HISTORY
The getgroups() function call appeared in 4.2BSD. 4.2 Berkeley Distribution October 28, 2011 4.2 Berkeley Distribution
Check Out this Related Man Page
getgroups(2) System Calls Manual getgroups(2) NAME
getgroups - Gets the supplementary group IDs of the current process SYNOPSIS
#include <unistd.h> int getgroups( int gidsetsize, gid_t grouplist[]); Application developers may want to specify an #include statement for <sys/types.h> before the one for <unistd.h> if programs are being developed for multiple platforms. The additional #include statement is not required on Tru64 UNIX systems or by ISO or X/Open standards, but may be required on other vendors' systems that conform to these standards. STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: getgroups(): XSH4.2 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Indicates the number of entries that can be stored in the array pointed to by the grouplist parameter. Points to the array in which the process' supplementary group IDs are stored. Element grouplist[0] is the effective group ID of the process. DESCRIPTION
The getgroups() function gets the current supplementary group IDs of the calling process. The list is stored in the array pointed to by the grouplist parameter. The gidsetsize parameter indicates the number of entries that can be stored in this array. The getgroups() function never returns more than NGROUPS_MAX entries. (NGROUPS_MAX is a constant defined in the limits.h header file.) If the gidsetsize parameter is 0 (zero), the getgroups() function returns the number of supplementary group IDs associated with the calling process without modifying the array pointed to by grouplist. RETURN VALUES
Upon successful completion, the getgroups() function returns the number of elements stored in the array pointed to by the grouplist parame- ter. Otherwise, the function returns a value of -1 and sets errno to indicate the error. ERRORS
If the getgroups() function fails, errno might be set to one of the following values: [Tru64 UNIX] The gidsetsize and grouplist parameters specify an array that is partially or completely outside of the allocated address space of the process. The gidsetsize parameter is nonzero and smaller than the number of supplementary group IDs. RELATED INFORMATION
Commands: groups(1) Functions: setgroups(2), getgid(2), setsid(2), initgroups(3) Standards: standards(5) delim off getgroups(2)