getpwuid和getpwnam的用法
如果知道一个用户的用户ID或者登录名,可以通过getpwuid或getpwnam函数获得用户的登录信息.
函数原型为:
#include <pwd.h>
#include <sys/types.h>
struct passwd *getpwnam(const char *name);
struct passwd *getpwuid(uid_t uid);
The passwd structure is defined in <pwd.h> as follows:
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user id */
gid_t pw_gid; /* group id */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
#include <sys/types.h>
struct passwd *getpwnam(const char *name);
struct passwd *getpwuid(uid_t uid);
The passwd structure is defined in <pwd.h> as follows:
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user id */
gid_t pw_gid; /* group id */
char *pw_gecos; /* real name */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
使用举例:
#include <pwd.h>
#include <sys/types.h>
#include <stdio.h>
int main()
{
uid_t my_uid;
my_uid = 500;
struct passwd *my_info;
my_info = getpwuid( my_uid );
//my_info = getpwnam( "fflg" );
printf( "my name = [%s]\n", my_info->pw_name );
printf( "my passwd = [%s]\n", my_info->pw_passwd );
printf( "my uid = [%d]\n", my_info->pw_uid );
printf( "my gid = [%d]\n", my_info->pw_gid );
printf( "my gecos = [%s]\n", my_info->pw_gecos );
printf( "my dir = [%s]\n", my_info->pw_dir );
printf( "my shell = [%s]\n", my_info->pw_shell );
return 0;
}
#include <sys/types.h>
#include <stdio.h>
int main()
{
uid_t my_uid;
my_uid = 500;
struct passwd *my_info;
my_info = getpwuid( my_uid );
//my_info = getpwnam( "fflg" );
printf( "my name = [%s]\n", my_info->pw_name );
printf( "my passwd = [%s]\n", my_info->pw_passwd );
printf( "my uid = [%d]\n", my_info->pw_uid );
printf( "my gid = [%d]\n", my_info->pw_gid );
printf( "my gecos = [%s]\n", my_info->pw_gecos );
printf( "my dir = [%s]\n", my_info->pw_dir );
printf( "my shell = [%s]\n", my_info->pw_shell );
return 0;
}