он использует /etc/passwd (ну, технически он использует API posix C, поэтому я полагаю, что он может работать на ОС, если он не использовал /etc/passwd, но отображал необходимые функции), но он чище, чем синтаксический анализ он вручную
Ответ 2
Никогда не просматривайте напрямую /etc/passwd.
Например, в системе Linux, которую я администрирую, учетные записи пользователей не находятся на /etc/passwd, а на сервере LDAP.
Правильный способ - использовать getpwent/getgrent и связанные с ним функции C (как в ответе @TFKyle), которые будут получать информацию о правильном пути для каждой системы (в Linux glibc она читает /etc/nsswitch.conf чтобы узнать, какие динамические библиотеки NSS загружаются для получения информации).