คำตอบ:
GUI:
บรรทัดคำสั่ง:
ตรวจสอบเจ้าของ /dev/console
stat -f '%u %Su' /dev/console
ในโปรแกรม C:
รหัส C ในQ&A ทางเทคนิค 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
ควรทำงาน
who
และมองหา "คอนโซล" ขอบคุณ
who
ไม่ถูกต้องในระบบ 10.4 ของฉันเมื่อใช้การสลับผู้ใช้อย่างรวดเร็ว (ระบบที่ฉันใช้อยู่ในขณะนี้แสดงผู้ใช้อื่นบน“ คอนโซล” แม้ว่าเซสชัน GUI ของฉันจะเป็นแอคทีฟ) บางทีมันน่าเชื่อถือมากขึ้นในรุ่นที่ใหม่กว่า