程序清单 6-1 getpwnam函数
/**
* 程序清单 6-1 getpwnam函数 P135
*
* zy:
* 返回口令文件,也就是/etc/passwd文件中的每一项。
* 本列我们写一个函数,调用函数可以得到与传入参数name相同的某一个口令文件的所有项
* 实际上getpwnam函数已经被实现好了,我们直接调用即可,但是这里我们只是写出了其一个实现
*/
#include <pwd.h>//header shall provide a definition for struct passwd
#include <stddef.h>//定义了一些标准宏以及类型
#include <string.h>
struct passwd *getpwnam(const char *name){
struct passwd *ptr;
setpwent();//自我保护的行为,万一之前passwd被打开就不好了
while((ptr=getpwent())!=NULL){
if(strcmp(name,ptr->pw_name)==0) {
break;
}
}
endpwent();
return ptr;
}
int main(int argc, char *argv[]) {
struct passwd *ptr;
ptr=getpwnam("asd");
printf("%s %s \n",ptr->pw_name,ptr->pw_shell);
}