Как получить имя пользователя из cpp в проекте Cmake? - PullRequest
0 голосов
/ 07 мая 2020

Я просто пытаюсь получить имя пользователя. то есть, это эквивалент 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...