setregid() — Set real and effective group IDs
Standards
Standards / Extensions | C or C++ | Dependencies |
---|---|---|
XPG4.2 |
both |
Format
#define _XOPEN_SOURCE_EXTENDED 1
#include <unistd.h>
int setregid(gid_t rgid, gid_t egid);
General description
The setregid() function sets the real and/or effective GIDs for the calling process to the values specified by the input real and effective GID values. If a specified value is equal to -1, the corresponding real or effective GID of the calling process is left unchanged.
A process with appropriate privileges can set the real and effective GID to any valid GID value. An unprivileged process can only set the effective GID if the EGID argument is equal to either the real, effective, or saved GID of the process. An unprivileged process can only set the real GID if the RGID argument is equal to either the real, effective, or saved GID of the process.
If the setregid() function is issued from multiple tasks within one address space, use synchronization to ensure that the setregid() functions are not performed concurrently. The execution of setregid() function concurrently within one address space can yield unpredictable results.
The setregid() function does not change any supplementary GIDs of the calling process.
Returned value
If successful, setregid() returns 0.
- Error Code
- Description
- EINVAL
- The value of the rgid or egid argument is invalid or out-of-range.
- EMVSSAF2ERR
- The SAF call IRRSSU00 incurred an error.
- EPERM
- The processes does not have appropriate privileges and a change other than changing the real group ID to the saved set-group-ID, or changing the effective group ID to the real group ID or the saved group ID, was requested.