预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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