setgid()

Set the real, effective and saved group IDs

Synopsis:

#include <unistd.h>

int setgid( gid_t gid );

Since:

BlackBerry 10.0.0

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 the real, effective and saved group IDs, based on the following:

  • If the process has the PROCMGR_AID_SETGID ability enabled (see procmgr_ability()), the setgid() function sets the real group ID, effective group ID and saved group ID to gid.
  • If the process doesn't have the PROCMGR_AID_SETGID ability enabled, but gid is equal to the real group ID, setgid() sets the effective group ID to gid; the real and saved group IDs aren't changed.

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 the setegid() function.

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

Last modified: 2014-06-24



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus