聘我网

新概念招聘3.0

linux如何获得当前用户帐号及群组信息?

vote up0vote downstar

rt...

 

1 个答复

vote up0vote downcheck

使用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);
}
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.