2

我正在尝试使用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的详细信息: 在此处输入图像描述

4

1 回答 1

4

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

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

于 2014-09-03T21:42:03.980 回答