GETPWENT(3C)
НАЗВАНИЕ
getpwent, getpwuid, getpwnam, setpwent, endpwent,
fgetpwent - получение элементов файла паролей
СИНТАКСИС
#include <pwd.h>
struct passwd *getpwent ( )
struct passwd *getpwuid (uid)
int uid;
struct passwd *getpwnam (name)
char *name;
void setpwent ( )
void endpwent ( )
struct passwd *fgetpwent (f)
FILE *f;
ОПИСАНИЕ
Каждая из функций getpwent, getpwuid и getpwnam возвращает указатель на структуру типа passwd, содержащую
разложенную на поля строку файла паролей /etc/passwd.
Структура описана во включаемом файле <pwd.h>:
struct passwd {
char *pw_name;
char *pw_passwd;
int pw_uid;
int pw_gid;
char *pw_age;
char *pw_comment;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
};
По поводу смысла полей структуры см.
passwd(4).
При первом вызове функция getpwent возвращает указатель
на первую структуру типа passwd в файле; при следующем
вызове возвращается указатель на следующую структуру;
поэтому последовательные вызовы функции можно использовать для просмотра всего файла. Функция getpwuid ищет с
начала файла строку, содержащую заданный идентификатор
пользователя uid, и возвращает указатель на структуру,
соответствующую искомой строке. Функция getpwnam ищет с
начала файла строку, содержащую специфицированное входное имя name и возвращает указатель на соответствующую
структуру. В случае неудачного поиска (в том числе из
за ошибки чтения) описанные функции возвращают пустой
указатель NULL.
Вызов функции setpwent приводит к переустановке указателя чтения на начало файла паролей, то есть после этого вызова можно снова повторить просмотр всего файла.
Функция endpwent служит для закрытия файла паролей.
Функция fgetpwent возвращает указатель на очередную
структуру типа passwd в потоке f, удовлетворяющем формату файла /etc/passwd.
ФАЙЛЫ
/etc/passwd
СМ. ТАКЖЕ
getlogin(3C), getgrent(3C), passwd(4).
ДИАГНОСТИКА
В случае неудачного поиска (в том числе из за ошибки
чтения) возвращается пустой указатель NULL.
ПРЕДОСТЕРЕЖЕНИЯ
Описанные функции используют стандартный пакет ввода/
вывода, что приводит к неожиданному увеличению размера
программ, не использующих стандартный ввод/вывод.
ОГРАНИЧЕНИЯ
Значения, возвращаемые описанными функциями, указывают
на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова. Поэтому,
если необходимо сохранить полученную с помощью функций
информацию, следует скопировать ее.