使用我的C++程序如何找出運行我的程序的當前用戶屬於哪個組?所以,我的程序需要弄清楚兩件事情:如何通過C++找出當前用戶屬於哪個組?
- 用戶
- 用戶所屬組的當前用戶名
如何才能做到以上2用C++上一個RedHat/Linux機器?
使用我的C++程序如何找出運行我的程序的當前用戶屬於哪個組?所以,我的程序需要弄清楚兩件事情:如何通過C++找出當前用戶屬於哪個組?
如何才能做到以上2用C++上一個RedHat/Linux機器?
With getuid(2)
and getgid(2)
。有關更多信息,請參閱credentials(7)
。
使用getpwuid(3)
和getgrgid(3)
作爲名稱。
您使用getuid(2)
和getgid(2)
獲得數字用戶和組ID,然後使用getpwuid(3)
和getgrgid(3)
來查找這些ID的用戶/組數據庫,並將其轉換爲文本名稱。
您可以通過getgid()
(真實GID)和getegid()
(有效GID)找到一些信息。對於其他輔助組,您需要使用getgroups()
。
實際上,真實有效的GID通常是相同的,但它是創建文件時使用的有效GID。通常,由getgroups()
返回的組列表通常包含真實組 - 儘管目前還不清楚它是否真的需要這樣做。
感謝您的回答... getgid返回第一個組ID,如果用戶屬於多個組會發生什麼?我如何找到他所屬的所有組的列表? – ace 2010-03-13 04:29:45
您必須使用另一個答案中給出的'getgroups(2)'。 – 2010-03-13 04:36:36
好的我想通了.... getgrnam()將返回一個名爲gr_mem的成員結構,它是特定組中所有用戶名的數組。 謝謝。 – ace 2010-03-13 04:37:49