Почему я получаю сообщение об ошибке "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);
Вы пропускаете те, в том числе.
getuid()
нет в pwd.h
, См. http://pubs.opengroup.org/onlinepubs/7908799/xsh/pwd.h.html