Получить запись из базы данных групп
#include <grp.h>struct group * getgrent( void );
libc
Функция getgrent() возвращает следующую запись из базы данных групп, хотя определенный их порядок не гарантируется. Данная функция использует статическую область памяти, которая перезаписывается при каждом вызове.
Следующая запись из базы данных групп (см. структуру 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 X/Open Systems Interfaces Extension
struct group, endgrent(), errno, getgrgid(), getgrnam(), getpwent(), getpwent_r(), setgrent()
Предыдущий раздел: Описание API системной библиотеки