| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) | 
Set the effective group ID for a process
#include <unistd.h> int setegid( gid_t gid );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The setegid() function lets the calling process set the effective group ID based on the following:
The real and saved group ID aren't changed.
|  | If a set-group ID process sets its effective group ID to its real group ID, it can still set its effective group ID back to the saved set-group ID. | 
The “superuser” is defined as any process with an effective user ID of 0, or an effective user ID of root.
Zero for success, or -1 if an error occurs (errno is set).
/*
 * This process sets its effective group ID to 2
 */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main( void )
{
    gid_t oegid;
    oegid = getegid();
    if( setegid( 2 ) == -1 ) {
        perror( "setegid" );
        return EXIT_FAILURE;
    }
    printf( "Was effective group %d, is 2\n", oegid );
    return EXIT_SUCCESS;
}
| Safety: | |
|---|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | Yes | 
| Thread | Yes | 
errno, getegid(), seteuid(), setgid(), setuid()
| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) |