OS X GUI에서 현재 로그인 한 사용자를 어떻게 찾을 수 있습니까?


11

특정 사용자, 특히 그래픽 사용자 인터페이스를 사용 하는 사용자가 컴퓨터에 로그인했는지 확인하려고합니다 .

커맨드 라인을 통해 가능합니까?


1
GUI와 명령 줄을 기다리시겠습니까? 양자 모두? 아니면 그냥 명령 줄? 혼란 스러워요.
Vervious

@ Nano8Blazex, 질문이 더 명확 해졌습니다.
gak

: D 대단하다!
Vervious

답변:


19

GUI :

  • 시스템 환경 설정 에서 계정 환경 설정 패널을여십시오 . 사전 선택된 사용자 계정이 활성 사용자 계정이됩니다.
  • 빠른 사용자 전환이 활성화 된 경우 추가 메뉴 (메뉴 막대의 오른쪽에있는 메뉴)를 활성화하여 활성 사용자의 이름을 표시 할 수 있습니다.

커맨드 라인 :

  • 의 소유자 확인 /dev/console

    stat -f '%u %Su' /dev/console
    
  • 공식 API를 사용하는 프로그램 작성 ( SCDynamicStoreCopyConsoleUser ; 아래 참조)

C 프로그램에서 :

기술 Q & A QA1133 : 콘솔 사용자 로그인 상태 판별 의 C 코드 는 활성 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;
}

맨 페이지 getlogin을 참조하십시오.
Itachi

stat -f '% u % Su'/ dev / console이 완벽하게 작동합니다. 감사합니다
Akshat

7

명령 줄을 통해, who그리고 users작동합니다.


아, who"콘솔"을 찾으십시오. 감사.
gak

1
@ Gerald : who빠른 사용자 전환을 사용할 때 10.4 시스템에서 사용 이 정확하지 않습니다 (GUI 세션이 활성화되어 있지만 지금 사용중인 시스템은 "콘솔"에 다른 사용자를 표시합니다). 최신 버전에서는 더 안정적 일 수 있습니다.
Chris Johnsen

@JohnT : 2 명의 사용자가 로그인 한 경우 (사용자 전환) who 명령은 'console'과 관련된 두 사용자를 모두 나열합니다. 제대로 작동하지 않습니다.
Akshat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.