OSX Yosemite getutxent()返回同一个用户两次

时间:2014-09-02 16:40:41

标签: c macos osx-yosemite osx-yosemite-beta

我正在尝试使用apple getutxent()中定义的<utmpx.h>函数获取当前登录用户的列表。我正在使用的测试代码是:

#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 个答案:

答案 0 :(得分:3)

getutxent()不报告用户,报告会话。

如果您打开了多个会话(例如,终端会话),它将被记录在用户会计数据库中并盲目检索。您可以通过查看ut_id结构的ud_lineutmpx元素来验证这一点。对于ut_user相同的每个实例,它们应该是不同的,因为它们位于不同的进程(和终端,如果你正在使用它)。