Как мне получить массив с uid и именами?
Я мог бы выполнить итерацию от 0 до 99999 и сделать getpwnam()
.
Однако большинство машин имеют менее 5 учетных записей, поэтому это не оптимально. Я не знаю, какой фреймворк за это отвечает, и поэтому понятия не имею, что искать.
Есть ли более оптимальное решение, которое может пройти через счета?
Редактировать: Сразу после публикации я обнаружил getpwent()
для обхода счетов.
setpwent();
struct passwd *pw;
while ((pw = getpwent())) printf("%d\n", pw->pw_uid);
endpwent();
Однако это не означает, является ли учетная запись системной учетной записью или нет.
Так как же получить учетные записи системных настроек?
Редактировать: Я нашел командную строку, эквивалентную этой команде dscl
.
prompt> dscl . -list /Users UniqueID
_mysql 74
_postfix 27
_spotlight 89
_sshd 75
_windowserver 88
_www 70
daemon 1
johndoe 501
nobody -2
root 0