OSX - получение идентификатора пользователя, вошедшего в систему, из системной службы. - PullRequest
1 голос
/ 30 июля 2009

Я пишу часть программного обеспечения, которая работает как системная служба в Mac OSX и, похоже, не может найти, как получить «активного» пользователя.

Похоже, что есть API-интерфейсы для перебора списка вошедших в систему пользователей, и из значения можно определить, какое из них имеет консоль компьютера ... однако я не могу найти никакой документации по этим API-интерфейсам.

Глядя на /dev, кажется, что устройство /dev/console принадлежит текущему вошедшему в систему пользователю ... однако мне не удалось найти какую-либо документацию для подтверждения этого.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 31 июля 2009

Ответ любезно предоставлен Apple Технические вопросы и ответы

  • Требуется SystemConfiguration.framework

    #include <SystemConfiguration/SystemConfiguration.h>
    /* .... */
    CFStringRef result = SCDynamicStoreCopyConsoleUser(NULL, NULL, NULL);
    /* .... */
    

ИЛИ используйте API utmpx, чтобы получить список всех зарегистрированных учетных записей, из которых вы сможете получить необходимую информацию ...

1 голос
/ 30 июля 2009

Вы можете использовать getuid и getgid , чтобы получить идентификатор пользователя и идентификатор группы пользователя. Вы можете использовать getlogin или getlogin_r , чтобы получить строковое представление имени текущего пользователя. Вы можете получить дополнительную информацию о пользователе с помощью getpwuid .

Как примечание: "мужчина" - твой друг. Если у вас есть сомнения, обратитесь к Справочным страницам UNIX .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...