第8章 Linux编程—用户管理函数.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:16 大小:215KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第8章 Linux编程—用户管理函数.pdf

第8章Linux编程—用户管理函数.pdf

预览

免费试读已结束,剩余 6 页请下载文档后查看

15 金币

下载此文档

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

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

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

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

LinuxLinux操作系统操作系统•大工软件学院嵌入式系邱铁办公楼409Tel:87571521E_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(取得真实的用户识别码)示例解析