Я искал часы и, похоже, не понял этого. Я знаю, как печатать, помещая текущего пользователя на машину в C, но как распечатать всех пользователей, которые существуют на машине, с помощью C. (Я запускаю Linux-машину). Справа приветствуется! :)Распечатайте всех пользователей машины в C
ответ
На машине UNIX, использовать ряд pwent
функций:
#include <sys/types.h>
#include <pwd.h>
int main() {
struct passwd *p;
while((p = getpwent())) {
printf("name: %s\n", p->pw_name);
}
}
Это проконсультируют авторитетную базу данных системы пользователей, которые не обязательно могут быть /etc/passwd
.
это работает! благодаря! –
Пользователи машины указаны в/etc/passwd. Хорошим способом фильтрации всех «человеческих» пользователей является
cat /etc/passwd | grep "/home" |cut -d: -f1
Как обычно пользователь имеет домашний каталог.
Теперь, для вызова его внутри C, вы можете использовать popen. Посмотрите на
man popen
Следует избегать использования 'popen', если для этого есть API. В этом случае 'getpwent/getpwuid' намного проще в использовании. – nneonneo
Я не знал этих команд. Thx nneonneo – Cristopher
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
int main(int argc, char ** argv)
{
int minUID = 0;
int maxUID = 10000;
for (int i = minUID; i < maxUID; ++i)
{
struct passwd * p = getpwuid(i);
if (p != NULL)
printf("%d : %s\n", i, p->pw_name);
}
}
проверено на BSD.
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
int main(int argc, char** argv) {
struct passwd *pwd;
while((pwd = getpwent())!=NULL) {
printf("%s\n",pwd->pw_name);
}
return 0;
}
- 1. Поиск всех доменов для машины в C#
- 2. Пакетный скрипт для получения списка всех пользователей локальной машины
- 3. Предотвращение остановки машины на Amazon перед завершением всех пользователей
- 4. Удалить всех пользователей в связанном списке C++
- 5. Извлечение всех пользователей в Parse C#
- 6. Распечатайте последний символ всех слов в строке
- 7. Распечатайте документ HTML в C#
- 8. Распечатайте список объектов в C#
- 9. Распечатайте текст-трапецию в C
- 10. C Распечатайте строковый массив
- 11. Запуск браузера в конечных пользователей машины
- 12. Настройка ключа реестра для всех пользователей В C#
- 13. Распечатайте колл-сайт всех вызовов Debug.Write()
- 14. Кэширование всех пользователей в ASP.NET
- 15. Государственные машины в C#
- 16. Государственные машины в C
- 17. Распечатайте список всех контроллеров для проекта?
- 18. Обнаружить всех пользователей .msi
- 19. Захват события сеанса пользователей Windows для всех пользователей?
- 20. Список всех пользователей и групп
- 21. Распечатайте все поддиректории $ d, у которых есть доступ для чтения для всех пользователей
- 22. Отображение всех пользователей в Meteor
- 23. Показать всех пользователей в Laravel
- 24. Vaadin выбрать всех пользователей
- 25. C - Распечатайте определенный сегмент Trie
- 26. Показать всех зарегистрированных пользователей
- 27. Распечатайте переменную имя цель-C
- 28. Показать всех пользователей liferay
- 29. Как уведомить всех пользователей?
- 30. Распечатайте унаследовали структурированный список C++
Вы можете попробовать прочитать из '/ etc/passwd' и распечатать токен перед первым символом ':'. Но это также даст вам пользователей системы и не будет работать для пользователей ldap. – szmoore