GETPWENT - Linux手册页

时间:2019-08-20 18:01:17  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

getpwent,setpwent,endpwent-获取密码文件条目

语法

#include <sys/types.h>
#include <pwd.h>

struct passwd *getpwent(void);

void setpwent(void);

void endpwent(void);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

getpwent(),setpwent(),endpwent():

_XOPEN_SOURCE>= 500 || / * Glibc自2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本

说明

getpwent()函数返回一个指向包含密码数据库中记录的中断字段的结构的指针(例如,本地密码文件/ etc / passwd,NIS和LDAP)。第一次调用getpwent()时,它将返回第一个条目;此后,它将返回连续的条目。

setpwent()函数后退到密码数据库的开头。

执行完所有处理后,使用endpwent()函数关闭密码数据库。

passwd结构的定义如下:

struct passwd {
    char   *pw_name;       /* username */
    char   *pw_passwd;     /* user password */
    uid_t   pw_uid;        /* user ID */
    gid_t   pw_gid;        /* group ID */
    char   *pw_gecos;      /* user information */
    char   *pw_dir;        /* home directory */
    char   *pw_shell;      /* shell program */
};

有关此结构的字段的更多信息,请参见passwd(5)。

返回值

getpwent()函数返回一个指向passwd结构的指针,如果没有更多条目或发生错误,则返回NULL。如果发生错误,则会正确设置errno。如果要在通话后检查errno,则应在通话前将其设置为零。

返回值可能指向静态区域,并且可能被后续对getpwent(),getpwnam(3)或getpwuid(3)的调用覆盖。 (不要将返回的指针传递给free(3)。)

错误说明

EINTR
捕获到信号;参见signal(7)。
EIO
I / O错误。
EMFILE
已达到打开文件描述符数量的每个进程限制。
ENFILE
已达到系统范围内打开文件总数的限制。
ENOMEM
内存不足,无法分配passwd结构。
ERANGE
提供的缓冲区空间不足。

文件

/etc/passwd
本地密码数据库文件

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
getpwent()Thread safetyMT-Unsafe race:pwent
race:pwentbuf locale
setpwent(),
endpwent()
Thread safetyMT-Unsafe race:pwent locale

在上表中,race中的pwent:pwent表示如果在程序的不同线程中并行使用setpwent(),getpwent()或endpwent()函数中的任何一个,则可能发生数据争用。

遵循规范

POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。在POSIX中未指定pw_gecos字段,但是在大多数实现中都存在。

另外参见

fgetpwent(3),getpw(3),getpwent_r(3),getpwnam(3),getpwuid(3),putpwent(3),passwd(5)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/