OSX Yosemite getutxent() дважды возвращает одного и того же пользователя
Я пытаюсь получить список текущих зарегистрированных пользователей, используя getutxent()
функция, определенная в Apple <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:
1 ответ
getutxent()
не сообщает о пользователях, он сообщает о сессиях.
Если у вас открыто несколько сеансов (например, терминальный сеанс), он будет зарегистрирован в базе данных учета пользователей и получен вслепую. Вы можете проверить это, проверив ut_id
а также ud_line
элементы utmpx
состав. Они должны быть разными для каждого случая, когда ut_user
то же самое, поскольку они населяют отдельные процессы (и терминалы, если вы используете это).