getgrent()

Получить запись из базы данных групп

Прототип:

#include <grp.h>
struct group * getgrent( void );

Библиотека:

libc

Описание:

Функция getgrent() возвращает следующую запись из базы данных групп, хотя определенный их порядок не гарантируется. Данная функция использует статическую область памяти, которая перезаписывается при каждом вызове.


Note: Функции getgrent(), getgrgid() и getgrnam() делят между собой одну статическую область памяти.

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

Следующая запись из базы данных групп (см. структуру struct group). При первом вызове getgrent(), открывается база данных групп. Она остается открытой до тех пор, пока либо getgrent() вернет NULL для определения достижения конца файла, либо не будет вызвана endgrent().

Коды ошибок:

Функция getgrent() использует следующие функции, и как следствие, errno может быть установлено в одном из этих вызовов:

Примеры:

/*
* This program loops, reading a group name from
* standard input and checking to see if it is a valid
* group. If it isn't valid, the entire contents of the
* group database are printed.
*/
#include <stdio.h>
#include <stdlib.h>
#include <grp.h>
#include <limits.h>
int main( void )
{
struct group *gr;
char buf[80];
setgrent();
while ( gets( buf ) != NULL )
{
if ( (gr = getgrnam( buf )) != (struct group *)0 )
{
printf( "Valid group is: %s\n", gr->gr_name );
} else {
setgrent();
while ( (gr = getgrent()) != (struct group *)0 )
printf( "%s\n", gr->gr_name );
}
}
endgrent();
return (EXIT_SUCCESS);
}

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

POSIX 1003.1 XSI

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

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

struct group, endgrent(), errno, getgrgid(), getgrnam(), getpwent(), getpwent_r(), setgrent()




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