1、getuid和getpwuid函数简介
(一)
(1)头文件
(3)说明
(二)
(1)头文件
2、举例:
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
uid_t uid;
uid = getuid();
printf("User IDs: uid=%d\n", uid);
uid_t my_uid;
struct passwd *my_info;
my_info =getpwuid( getuid() );
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;
}
结果:
User IDs: uid=501
my name = [mister]
my passwd = [x]
my uid = [501]
my gid = [100]
my gecos = []
my dir = [/home/mister]
my shell = [/bin/bash]
3、小结
从函数中可以看到先用getuid获取到用户id号,然后使用getpwuid获取到了用户的相关信息。
这个函数实现的机制其实就是跟/etc/passwd的文件中记录的信息一样,cat /etc/passwd如下:
pulse:x:495:491:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
stap-server:x:155:155:Systemtap Compile Server:/var/lib/stap-server:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/bin/sh
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
winter:x:500:500::/home/winter:/bin/bash
mister:x:501:100::/home/mister:/bin/bash
结构体passwd和这个文件中是一一对应的。实际上这个函数实现的就是获取passwd文件中的信息。可以知道当前程序正在使用的用户以及用户路径。