2010-03-13 91 views
0

使用我的C++程序如何找出運行我的程序的當前用戶屬於哪個組?所以,我的程序需要弄清楚兩件事情:如何通過C++找出當前用戶屬於哪個組?

  1. 用戶
  2. 用戶所屬組的當前用戶名

如何才能做到以上2用C++上一個RedHat/Linux機器?

回答

5

With getuid(2) and getgid(2)。有關更多信息,請參閱credentials(7)

使用getpwuid(3)getgrgid(3)作爲名稱。

+0

感謝您的回答... getgid返回第一個組ID,如果用戶屬於多個組會發生什麼?我如何找到他所屬的所有組的列表? – ace 2010-03-13 04:29:45

+0

您必須使用另一個答案中給出的'getgroups(2)'。 – 2010-03-13 04:36:36

+0

好的我想通了.... getgrnam()將返回一個名爲gr_mem的成員結構,它是特定組中所有用戶名的數組。 謝謝。 – ace 2010-03-13 04:37:49

2

您使用getuid(2)getgid(2)獲得數字用戶和組ID,然後使用getpwuid(3)getgrgid(3)來查找這些ID的用戶/組數據庫,並將其轉換爲文本名稱。

3

您可以通過getgid()(真實GID)和getegid()(有效GID)找到一些信息。對於其他輔助組,您需要使用getgroups()

實際上,真實有效的GID通常是相同的,但它是創建文件時使用的有效GID。通常,由getgroups()返回的組列表通常包含真實組 - 儘管目前還不清楚它是否真的需要這樣做。

相關問題