Как извлечь имя пользователя из идентификатора пользователя - PullRequest
6 голосов
/ 25 ноября 2011

Я реализую команду (ls) в Unix во время обучения из книги.Во время кодирования моей реализации команды (ls) с флагом (- l) я вижу, что мне нужно запросить имена пользователей и групп файла.Пока у меня есть идентификаторы пользователя и группы из следующих строк:

struct stat statBuf;

statBuf.st_uid; //For the user id. 
statBuf.st_gid; //For the group id. 

В стандартной команде (ls) в Unix информация о файле печатается таким образомчто вместо имени пользователя отображается имя пользователя.

Может ли кто-нибудь помочь мне найти правильную методологию получения имен пользователей и групп из их идентификаторов?

Ответы [ 2 ]

15 голосов
/ 25 ноября 2011

Вы используете getpwuid для поиска записи файла пароля для определенного UID (который включает имя пользователя, но теперь не сам пароль) и getgrgid длянайдите запись в файле группы для определенного GID.

2 голосов
/ 23 августа 2018

проверьте мой код для имени пользователя:

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

string getUser(uid_t uid)
{
    struct passwd *pws;
    pws = getpwuid(uid);
        return pws->pw_name;
}

для имени группы вы можете использовать getgrgid.

...