Попытка выяснить, вошел ли в систему конкретный пользователь, в частности, пользователь, использующий графический интерфейс пользователя.
Это возможно через командную строку?
Попытка выяснить, вошел ли в систему конкретный пользователь, в частности, пользователь, использующий графический интерфейс пользователя.
Это возможно через командную строку?
GUI:
Командная строка:
Проверьте владельца /dev/console
stat -f '%u %Su' /dev/console
В программе на C:
Код C в Технических вопросах и ответах QA1133: Определение состояния входа пользователя консоли показывает, как определить, какой пользователь владеет активным сеансом GUI.
Например:
/* Adapted from QA1133:
 *    http://developer.apple.com/mac/library/qa/qa2001/qa1133.html
 */
#include <assert.h>
#include <SystemConfiguration/SystemConfiguration.h>
int main(int argc, char **argv) {
    SCDynamicStoreRef store;
    CFStringRef name;
    uid_t uid;
#define BUFLEN 256
    char buf[BUFLEN];
    Boolean ok;
    store = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
    assert(store != NULL);
    name = SCDynamicStoreCopyConsoleUser(store, &uid, NULL);
    CFRelease(store);
    if (name != NULL) {
        ok = CFStringGetCString(name, buf, BUFLEN, kCFStringEncodingUTF8);
        assert(ok == true);
        CFRelease(name);
    } else {
        strcpy(buf, "<none>");
    }
    printf("%d %s\n", uid, buf);
    return 0;
}
Через командную строку who и users должны работать.