Es wird versucht herauszufinden, ob ein bestimmter Benutzer am Computer angemeldet ist, insbesondere der Benutzer , der die grafische Benutzeroberfläche verwendet.
Ist das über die Kommandozeile möglich?
Es wird versucht herauszufinden, ob ein bestimmter Benutzer am Computer angemeldet ist, insbesondere der Benutzer , der die grafische Benutzeroberfläche verwendet.
Ist das über die Kommandozeile möglich?
Antworten:
GUI:
Befehlszeile:
Überprüfen Sie den Besitzer von /dev/console
stat -f '%u %Su' /dev/console
In einem C-Programm:
Der C-Code in Technische Fragen und Antworten QA1133: Bestimmen des Anmeldestatus des Konsolenbenutzers zeigt, wie ermittelt wird, welchem Benutzer die aktive GUI-Sitzung gehört.
Zum Beispiel:
/* 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;
}
Über die Kommandozeile who
und users
sollte funktionieren.
who
und suchen Sie nach "Konsole". Vielen Dank.
who
ist auf meinem 10.4-System bei schneller Benutzerumschaltung nicht korrekt (das System, das ich gerade verwende, zeigt einen anderen Benutzer auf der „Konsole“ an, obwohl meine GUI-Sitzung die aktive ist). Vielleicht ist es in neueren Versionen zuverlässiger.