How to print the current user and system name in U

2019-05-08 16:57发布

问题:

Please i am looking forward to learn how to print the current logged-in user and system name in 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;
}

I would be grateful if you can provide a line of code or two as demonstration. Thanks

回答1:

getuid() gets the id not the username. To get the username you'll have to additionally use getpwuid():

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

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

See it

And for getting the hostname you can use the gethostname() function.



回答2:

User --> getuid() (see also geteuid()).

Machine name --> gethostname().

That is pure C. I don't know whether C++ has other library calls for that.



回答3:

You need to call the uname, gethostname, getuid (and perhaps getgid) system calls, and to convert the numerical uid with getpwent function.