Linux getpw、getpwend、setpwent和endpwent函数

getpw、getpwend、setpwent和endpwent


头文件

1. #include
    #include
    #define _GNU_SOURCE
2. #incldue
    #include
3. #include
    #include
4. #include
    #include  

函数原型

int getpw(uid_t uid, char *buf);

struct passwd *getpwent(void);

void setpwent(void);

void endpwent(void);


功能

getpw函数取得uid_t为uid的用户的密码文件的相关数据。
getpwent函数返回下一条记录项,此记录项是一个由它填写好的password结构的指针。
setpwent函数能从密码文件中取得帐号的数据,setpwent()用来将getpwent()的读写地址指回密码文件开头
endpwent函数一般用来关闭用getpwent打开的密码文件。


参数

struct passwd
{
	char *pw_name;  /*用户帐号*/
	char *pw_passwd;    /*用户密码*/
	uid_t pw_uid;       /*用户识别码*/
	gid_t pw_gid;       /*组识别码*/
	char *pw_gecos;  /*用户全名*/
	char *pw_dir;     /*家目录*/
	char *pw_shell;   /*所使用的shell的路径*/
};


例子

getpw

#include 
#include 
#include 
#include 

int main()
{
	char buffer[80];

	getpw(0, buffer);
	printf("%s\n", buffer);
	exit(0);
}

getpwent和endpwent


#include 
#include 
#include 
#include 
#include 

int main(void)
{
	struct passwd *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();
	exit(0);
}

来自unix环境高级编程的例子

#include      /*getpwnam函数的实现*/
#include 
#include 
#include 

struct passwd *getpwnam(const char *name)
{
	struct passwd *ptr;

	setpwent();
	while((ptr = getpwent()) != NULL)
	{
		if(strcmp(name, ptr->pw_name) == 0)
		{
			break;
		}
	}

	endpwent();
	return(ptr);
}



你可能感兴趣的:(Linux环境编程)