使用getuid(2)及getgid(2)获得uid/gid;
接着getpwuid(3)及getgrgid(3)获得详细信息:
#include <unistd.h>
#include <grp.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
uid_t my_uid;
my_uid = getuid();
struct passwd *my_info;
my_info = getpwuid( my_uid );
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 );
int index = 0;
struct group *gr;
gr = getgrgid(getgid());
printf("gr->gr_name : %s\n", gr->gr_name);
printf("gr->gr_passwd : %s\n", gr->gr_passwd);
printf("gr->gr_gid : %d\n", gr->gr_gid);
while ( *(gr->gr_mem + index) != NULL )
{
/* 其中字段gr_mem是一个字符指针数组,其每个指针各指向一个属于该组的用户名,该指针数组以空指针NULL结尾 */
printf("gr->gr_mem : %s\n", *(gr->gr_mem + index));
++index;
}
exit(EXIT_SUCCESS);
}