Как напечатать имя текущего пользователя и системы в Unix? - PullRequest
4 голосов
/ 04 января 2012

Пожалуйста, я с нетерпением жду, чтобы узнать, как напечатать текущего вошедшего в систему пользователя и имя системы в Unix.

#include <unistd.h>
#include <fcntl.h>

using namespace std;

int main(int argc, char **argv)   
{      
     //Print the current logged-in user / username.   
     //Print the name of the system / computer name.

     return 0;
}

Буду признателен, если вы предоставите одну или две строки кода в качестве демонстрации. Спасибо

Ответы [ 3 ]

5 голосов
/ 04 января 2012

Пользователь -> getuid() (см. Также geteuid()).

Имя машины -> gethostname().

Это чистый C. Я не знаю, есть ли у C ++ другие библиотечные вызовы для этого.

4 голосов
/ 04 января 2012

Вам необходимо вызвать uname , gethostname , getuid (и, возможно, getgid ) системных вызовов и преобразовать числовой идентификатор с помощью функции getpwent .

3 голосов
/ 04 января 2012

getuid() получает идентификатор, а не имя пользователя.Чтобы получить имя пользователя, вам придется дополнительно использовать getpwuid():

struct passwd *passwd;
passwd = getpwuid ( getuid()); 

printf("The Login Name is %s ", passwd->pw_name);

Посмотреть его

А для получения имени хоста вы можете использовать gethostname()функция.

...