setregid()
Set real and effective group IDs
Synopsis:
#include <unistd.h> int setregid( gid_t rgid, gid_t egid );
Arguments:
- rgid
- The real group ID that you want to use for the process, or -1 if you don't want to change it.
- egid
- The effective group ID that you want to use for the process, or -1 if you don't want to change it.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The setregid() function sets the real and effective group IDs of the calling process. If rgid or egid is -1, the corresponding real or effective group ID is left unchanged.
If the process has the PROCMGR_AID_SETGID ability enabled (see procmgr_ability() ), you can set the real group ID and the effective group ID to any legal value.
If the process doesn't have the PROCMGR_AID_SETGID ability enabled, you can set either the real group ID to the saved set-group ID, or the effective group ID to either the saved set-group ID or the real group ID.
In either case, if you're changing the real group ID (i.e. rgid isn't -1), or you're changing the effective group ID to a value that isn't equal to the real group ID, the saved set-group ID is set to the new effective group ID.
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EINVAL
- The rgid or egid is out of range.
- EPERM
- The calling process doesn't have the PROCMGR_AID_SETGID
ability enabled, and you tried
to change the effective group ID to a value other than the real
or saved set-group ID.
Or:
The calling process doesn't have the PROCMGR_AID_SETGID ability enabled, and you tried to change the real group ID to a value other than the effective group ID.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |