Set real and effective group IDs
#include <unistd.h> int setregid( gid_t rgid, gid_t egid );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
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.
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.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |