특정 사용자, 특히 그래픽 사용자 인터페이스를 사용 하는 사용자가 컴퓨터에 로그인했는지 확인하려고합니다 .
커맨드 라인을 통해 가능합니까?
답변
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;
}
답변
명령 줄을 통해, who
그리고 users
작동합니다.