2012-01-22 6 views
0

у меня есть это в моем исходном коде:Получение начального файла паролей для текущего пользователя

struct passwd* user_info = getpwnam("root"); 

Есть в любом случае, чтобы изменить «корень» и моя программа найдет текущего пользователя? Например, если я вошел в систему с пользователем root2, я хочу получить информацию для root2, а не для root.

ответ

1

Вы найдете ответы пользователя на номер getuid() (form unistd.h) и передаете его по номеру getpwuid().

+0

это не работает! – BlackM

+1

«Это не работает!» не является полезным. Что именно не работает? Как именно вы написали код? – Mat

+0

struct passwd * user_info = getpwnam (getuid()); – BlackM

-2

Следующий код будет получить имя пользователя в Linux,

#include<iostream> 
using namespace std; 
int main() 
{ 
    std::string name; 
    name = system("whoami"); 
    cout << "Name is : " << name; 
    cout << endl; 
     return 0; 
} 
+3

'system()' возвращает статус выхода команды, а не стандартный вывод. – Staven

+1

И вы не включаете заголовок для 'system', даже если он как-то так работает. – Mat

+0

Кроме того, это зависит от пользователя, который имеет программу 'whoami' где-то на своем пути. –

Смежные вопросы