GETPWENT - Linux手册页
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)。
Interface | Attribute | Value |
getpwent() | Thread safety | MT-Unsafe race:pwent race:pwentbuf locale |
setpwent(), endpwent() | Thread safety | MT-Unsafe race:pwent locale |
在上表中,race中的pwent:pwent表示如果在程序的不同线程中并行使用setpwent(),getpwent()或endpwent()函数中的任何一个,则可能发生数据争用。
遵循规范
POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。在POSIX中未指定pw_gecos字段,但是在大多数实现中都存在。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。