Получить следующую запись из файла базы данных паролей
#include <sys/types.h>#include <pwd.h>struct passwd * getpwent( void );
libc
Функция getpwent() возвращает следующую запись из базы данных паролей. Эта функция использует статический буфер, который перезаписывается при каждом вызове.
Функции getpwent(), getpwnam() и getpwuid(), разделяют один статический буфер. Чтобы использовать эти функции с возможностью повторного вызова, см. getpwent_r(). |
Указатель на структуру struct passwd, содержащую следующую запись из базы данных паролей. При первом вызове getpwent() открывается база данных паролей и остается открытой до тех пор, пока либо не будет возвращено значение NULL
для обозначения конца файла, либо не вызовется endpwent().
Функция getpwent() вызывает следующие функции, и как следствие, errno может быть установлен в одном из этих вызовов:
/** This program loops, reading a login name from standard* input and checking to see if it is a valid name. If it* is not valid, the entire contents of the name in the* password database are printed.*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <pwd.h>int main( void ){struct passwd *pw;char buf[80];setpwent();while ( gets( buf ) != NULL ){if ( (pw = getpwnam( buf )) != (struct passwd *)0 ){printf( "Valid login name is: %s\n", pw->pw_name );} else {setpwent();while ( (pw = getpwent()) != (struct passwd *)0 )printf( "%s\n", pw->pw_name );}}endpwent();return (EXIT_SUCCESS);}
POSIX 1003.1 X/Open Systems Interfaces Extension
struct passwd, endpwent(), errno, getgrent(), getlogin(), getpwent_r(), getpwnam(), getpwuid(), setpwent()
Предыдущий раздел: Описание API системной библиотеки