setgid()

Set the real, effective and saved set-group IDs

Synopsis:

#include <unistd.h>

int setgid( gid_t gid );

Arguments:

gid
The group ID that you want to use for the process.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The setgid() function lets the calling process set its real and effective group IDs and its saved set-group ID to its real or effective group ID, its saved set-group ID, or one of the group IDs identified by the PROCMGR_AID_SETGID ability (see procmgr_ability()).

This function doesn't change any supplementary group IDs of the calling process.

If you wish to change only the effective group ID, you should consider using setegid()

Returns:

0
Success.
-1
An error occurred; errno is set to indicate the error.

Errors:

EINVAL
The value of gid is invalid.
EPERM
The process doesn't have the PROCMGR_AID_SETGID ability enabled, and gid doesn't match the real group ID.

Examples:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main( void )
  {
    gid_t ogid;

    ogid = getgid();
    if( setgid( 2 ) == -1 ) {
       perror( "setgid" );
       return EXIT_FAILURE;
    }
    printf( "group id is now 2, was %d\n", ogid );
    return EXIT_SUCCESS;
  }

Classification:

POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes