我正在尝试使用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的详细信息:
答案 0 :(得分:3)
getutxent()
不报告用户,报告会话。
如果您打开了多个会话(例如,终端会话),它将被记录在用户会计数据库中并盲目检索。您可以通过查看ut_id
结构的ud_line
和utmpx
元素来验证这一点。对于ut_user
相同的每个实例,它们应该是不同的,因为它们位于不同的进程(和终端,如果你正在使用它)。