Cercando di scoprire se un determinato utente è registrato nella macchina, in particolare l'utente utilizzando l'interfaccia utente grafica.
E 'possibile via linea di comando?
Cercando di scoprire se un determinato utente è registrato nella macchina, in particolare l'utente utilizzando l'interfaccia utente grafica.
E 'possibile via linea di comando?
Risposte:
GUI:
Riga di comando:
Controlla il proprietario di /dev/console
stat -f '%u %Su' /dev/console
In un programma C:
Il codice C in Q & amp; QA1133 tecnico: Determinazione dello stato di accesso dell'utente della console mostra come determinare quale utente possiede la sessione della GUI attiva.
Per esempio:
/* 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;
}
Tramite la riga di comando, who
e users
dovrebbe funzionare.
who
e cercare "console". Grazie.
who
non è accurato sul mio sistema 10.4 quando si usa la commutazione rapida dell'utente (il sistema che sto usando in questo momento mostra un altro utente su "console" anche se la mia sessione GUI è quella attiva). Forse è più affidabile nelle versioni più recenti.