Linux getpw、getpwend、setpwent和endpwent函数

本文介绍了Linux系统中与密码文件操作相关的getpw、getpwent、setpwent和endpwent函数。详细阐述了它们的功能、参数及使用示例,帮助理解如何在Unix环境中获取和管理用户密码数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

getpw、getpwend、setpwent和endpwent


头文件

1. #include <pwd.h>
    #include <sys/types.h>
    #define _GNU_SOURCE
2. #incldue <pwd.h>
    #include <sys/types.h>
3. #include <pwd.h>
    #include <sys/types.h>
4. #include <pwd.h>
    #include <sys/types.h>  

函数原型

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 <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>

int main()
{
	char buffer[80];

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

getpwent和endpwent


#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>

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 <pwd.h>     /*getpwnam函数的实现*/
#include <stddef.h>
#include <string.h>
#include <sys/types.h>

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);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值