2012-01-04 72 views
4

請期待學習如何在Unix中打印當前登錄的用戶和系統名稱。如何在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; 
} 

如果您能提供一行或兩行代碼作爲演示,我將不勝感激。謝謝

+1

這是一個家庭工作問題嗎?你可能應該做一些研究,而不是直接問這樣的問題。例如參見http://en.wikipedia.org/wiki/Exec_(operating_system)。 – 2012-01-04 08:29:26

+0

好的..謝謝。 [之間,這不是一項功課]。 – CompilingCyborg 2012-01-04 08:31:01

回答

3

getuid()得到的id不是用戶名。爲了讓你有用戶名另外使用getpwuid()

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

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

See it

而對於讓你可以使用gethostname()功能的主機名。

+0

感謝您的明確答覆和您的時間。 – CompilingCyborg 2012-01-04 08:42:58

5

用戶 - >getuid()(另請參閱geteuid())。

機器名稱 - >gethostname()

這是純粹的C.我不知道C++是否有其他庫調用。

+2

我不會稱之爲「純C」。這些函數是由POSIX定義的,而不是由C標準定義的,並且它們可能在某些系統(例如Windows)上不可用。 (是的,我知道這個問題被標記爲「unix」。) – 2012-01-04 08:36:57