Я просто пытаюсь получить имя пользователя. то есть, это эквивалент whoami
на машине ubuntu. Но я не могу получить. Я пробовал следующие фрагменты.
метод-1:
std::string get_username() {
struct passwd *pwd = getpwuid(getuid());
if (pwd)
return pwd->pw_name;
else
return "(?)";
}
метод-2:
#include<iostream>
#include <cstdio>
using namespace std;
int main()
{
char text[255];
FILE *name;
name = popen("whoami", "r");
fgets(text, sizeof(text), name);
cout << "Name is : " << text;
pclose(name);
cout << endl;
return 0;
}
метод-3:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
cout << getenv("USER") << endl;
cout << getenv("HOME") << endl;
return 0;
}
Все методы возвращают значение, как я и ожидал. Но когда я интегрирую этот код в свой проект Cmake, он всегда возвращает root
. Я не понимаю, почему я всегда получаю root в ответ, когда пытаюсь использовать Cmake.
Как получить правильное значение вместо root?