第8章 Linux编程—用户管理函数.pdf
LinuxLinux操作系统操作系统操作系统操作系统 大工软件学院嵌入式系大工软件学院嵌入式系邱铁邱铁办公楼办公楼409Tel:87571521E_mail:第8章Linux编程用户管理函数Getgrent(从组文件中取得账号的数据)(从组文件中取得账号的数据)续endgrent(关闭组文件)(关闭组文件)示例解析示例解析#include#include main()struct group*data;int i;while(data=getgrent()!=0)i=0;printf(%s:%s:%d:,data-gr_name,data-gr_passwd,data-gr_gid);while(data-gr_memi)printf(%s,data-gr_memi+);printf(n);endgrent();Getpw(取得指定用户的密码文件数据)(取得指定用户的密码文件数据)示例解析示例解析#include#include main()struct group*data;int i;while(data=getgrent()!=0)i=0;printf(%s:%s:%d:,data-gr_name,data-gr_passwd,data-gr_gid);while(data-gr_memi)printf(%s,data-gr_memi+);printf(n);endgrent();Getpwent(从密码文件中取得账号的数据)(从密码文件中取得账号的数据)表头文件表头文件#include#include 定义函数定义函数 strcut passwd*getpwent(void);函数说明函数说明 getpwent()用来从密码文件(/etc/passwd)中读取一项用户数据,该用户的数据以passwd 结构返回。第一次调用时会取得第一位用户数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。续passwd结构定义如下:struct passwdchar*pw_name;/*用户账号*/char*pw_passwd;/*用户密码*/uid_t pw_uid;/*用户识别码*/gid_t pw_gid;/*组识别码*/char*pw_gecos;/*用户全名*/char*pw_dir;/*家目录*/char*pw_shell;/*所使用的shell路径*/;返回值返回值返回passwd 结构数据,如果返回NULL 则表示已无数据,或有错误发生。续 附加说明附加说明 getpwent()在第一次调用时会打开密码文件,读取数据完毕后可 使用endpwent()来关闭该密码文件。错误代码错误代码 ENOMEM 内存不足,无法配置passwd结构。示例解析示例解析#include#include main()struct passwd*user;while(user=getpwent()!=0)printf(“%s:%d:%d:%s:%s:%sn”,user-pw_name,user-pw_uid,user-pw_gid,user-pw_gecos,user-pw_dir,user-pw_shell);endpwent();Getpwnam从密码文件中取得指定账号的数据从密码文件中取得指定账号的数据示例解析示例解析#include#include main()struct passwd*user;while(user=getpwent()!=0)printf(“%s:%d:%d:%s:%s:%sn”,user-pw_name,user-pw_uid,user-pw_gid,user-pw_gecos,user-pw_dir,user-pw_shell);endpwent();getuid(取得真实的用户识别码)(取得真实的用户识别码)示例解析示例解析