2014-09-02 65 views
2

我正在嘗試使用在蘋果的<utmpx.h>中定義的getutxent()函數獲取當前登錄用戶的列表。我正在使用的測試代碼是這樣的:OSX優勝美地getutxent()返回兩次相同的用戶

#include <stdio.h> 
#include <utmpx.h> 

int main(void) { 
    setutxent(); 
    while (1) { 
     struct utmpx *user_info = getutxent(); 
     if (user_info == NULL) break; 
     printf("%s\n", user_info->ut_user); 
    } 
    return 0; 
} 

我正在測試它只有一個登錄用戶。我得到的輸出是這樣的:

myusername 
myusername 

爲什麼我的用戶名會出現兩次?如果有多個用戶會發生這種情況嗎?關於我的MAC

詳情: enter image description here

+1

優勝美地只是一個測試版產品。這可能是已知問題,在最終版本中已經修復。我建議在Apple開發者論壇上提問:https://devforums.apple.com/ – TheDarkKnight 2014-09-03 12:43:29

+1

@ Merlin069會做 – jamespick 2014-09-03 20:24:42

回答

3

getutxent()不報告的用戶,它報告的會議。

如果您打開了多個會話(例如,終端會話),它將被記錄在用戶記帳數據庫中並盲目地檢索。您可以通過檢查utmpx結構的ut_idud_line元素來驗證此情況。他們應該是不同的,因爲他們居住在不同的過程中(和終端,如果你使用的話)。