getgroups()

Получить дополнительные идентификаторы групп для вызывающего процесса

Прототип:

#include <sys/types.h>
#include <unistd.h>
int getgroups( int gidsetsize,
gid_t grouplist[] );

Аргументы:

gidsetsize
Размер массива grouplist.
grouplist
Массив, который функция может заполнять дополнительными идентификаторами групп процесса.

Библиотека:

libc

Описание:

Функция getgroups() заполняет массив grouplist дополнительными идентификаторами групп вызывающего процесса. Значения элементов массива с индексами большими или равными возвращаемому значению не определены.

Возвращаемое значение:

Количество дополнительных идентификаторов групп; это значение равно нулю при NGROUPS_MAX равном нулю.

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

EINVAL
Аргумент gidsetsize не равен нулю и меньше, чем число дополнительных идентификаторов групп.

Примеры:

/*
* Print the supplementary group IDs of
* the calling process.
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main( void )
{
int gidsize;
gid_t *grouplist;
int i;
gidsize = getgroups( 0, NULL );
grouplist = malloc( gidsize * sizeof( gid_t ) );
getgroups( gidsize, grouplist );
for ( i = 0; i < gidsize; i++ )
printf( "%d\n", ( int )grouplist[i] );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno, getegid(), geteuid(), getgid(), getuid(), setgroups()




Предыдущий раздел: Описание API системной библиотеки