2014-09-02 86 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元素来验证此情况。他们应该是不同的,因为他们居住在不同的过程中(和终端,如果你使用的话)。