Node:Reading Persona, Next:Setting User ID, Previous:How Change Persona, Up:Users and Groups
Here are detailed descriptions of the functions for reading the user and
group IDs of a process, both real and effective. To use these
facilities, you must include the header files sys/types.h
and
unistd.h
.
uid_t | Data Type |
This is an integer data type used to represent user IDs. In the GNU
library, this is an alias for unsigned int .
|
gid_t | Data Type |
This is an integer data type used to represent group IDs. In the GNU
library, this is an alias for unsigned int .
|
uid_t getuid (void) | Function |
The getuid function returns the real user ID of the process.
|
gid_t getgid (void) | Function |
The getgid function returns the real group ID of the process.
|
uid_t geteuid (void) | Function |
The geteuid function returns the effective user ID of the process.
|
gid_t getegid (void) | Function |
The getegid function returns the effective group ID of the process.
|
int getgroups (int count, gid_t *groups) | Function |
The getgroups function is used to inquire about the supplementary
group IDs of the process. Up to count of these group IDs are
stored in the array groups; the return value from the function is
the number of group IDs actually stored. If count is smaller than
the total number of supplementary group IDs, then getgroups
returns a value of -1 and errno is set to EINVAL .
If count is zero, then Here's how to use gid_t * read_all_groups (void) { int ngroups = getgroups (0, NULL); gid_t *groups = (gid_t *) xmalloc (ngroups * sizeof (gid_t)); int val = getgroups (ngroups, groups); if (val < 0) { free (groups); return NULL; } return groups; } |