Почему я получаю сообщение об ошибке "getuid не был объявлен в этой области"?

#include <string>
#include <stdio.h>
#include <pwd.h>

std::string impPath()
{
    char *name;
    struct passwd *pass;
    pass = getpwuid(getuid());
    name = pass->pw_name;

    std::string PATH = "/home";
    PATH.append("/");
    PATH.append(name);

    return PATH;
}

Мне нужно знать имя пользователя пользователя. Для того, чтобы сделать это. я использую getpwuid() но я получаю эту ошибку.

/home/shobhit/Desktop/file.cpp:15: error: 'getuid' was not declared in this scope
 pass = getpwuid(getuid());
                        ^

Я просто не мог понять, по какой причине getuid не объявлен в этой области. Я думаю, что я включил все необходимые файлы заголовков.(Комментарий yami к ответу R. Функция getlogin() c возвращает NULL и ошибку "Нет такого файла или каталога". Я попытался выполнить поиск в Интернете, но не смог найти никакого соответствующего ответа.

2 ответа

Решение

man getuid:

СИНТАКСИС

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

uid_t getuid(void);
uid_t geteuid(void);

Вы пропускаете те, в том числе.

Другие вопросы по тегам