2013-01-15 19 views
5

Kullanıcının oturum açma ve kapama süresini objektif-c programında almak mümkün müdür? Oturum kimliği, kullanıcı adı, userUID, userIsActive ve loginCompleted ile CGSessionCopyCurrentDictionary işlevini alabilirim ancak oturum açma ve oturum kapatma zamanı alamıyorum, yapabilir miyim?Objective-c - Kullanıcı girişi ve çıkış süresi

Bilgiyi console.app adresinden alabildiğimi biliyorum, ancak bunu bir programa koymak istiyorum.

Bunun hakkında daha fazla bilgi nereden alabilirim? Apple'ın geliştirme rehberinde bulamıyorum.

Teşekkürler!

cevap

5

Kullanıcı oturum açma/oturum kapatma zamanı almak için özel bir Kakao işlevi olup olmadığını bilmiyorum.

Ancak, oturum açma/oturum kapatma geçmişini doğrudan getutxent_wtmp() kullanarak okuyabilirsiniz. http://www.opensource.apple.com/source/adv_cmds/adv_cmds-149/last/last.c

Sadece çok basit bir örnek vermek: aşağıdaki program baskılar tüm giriş/çıkış süreleri standart çıkışa: Bu kaynak kodunda görülebileceği gibi "son" komut satırı aracı, yaptığı iştir

#include <stdio.h> 
#include <utmpx.h> 

int main(int argc, const char * argv[]) 
{ 
    struct utmpx *bp; 
    char *ct; 

    setutxent_wtmp(0); // 0 = reverse chronological order 
    while ((bp = getutxent_wtmp()) != NULL) { 
     switch (bp->ut_type) { 
      case USER_PROCESS: 
       ct = ctime(&bp->ut_tv.tv_sec); 
       printf("%s login %s", bp->ut_user, ct); 
       break; 
      case DEAD_PROCESS: 
       ct = ctime(&bp->ut_tv.tv_sec); 
       printf("%s logout %s", bp->ut_user, ct); 
       break; 

      default: 
       break; 
     } 
    }; 
    endutxent_wtmp(); 

    return 0; 
} 
+0

Teşekkürler, ihtiyacım olan buydu! :) – Oggy

+0

Bununla ilgili başka bir sorum var. Sadece son kullanıcı oturum açma adı ve saati almak mümkün mü? – Oggy

+0

@Oggy: 'setutxent_wtmp (0)' ile giriş/çıkış girişleri ters kronolojik sırayla döndürülür. Yani bir kullanıcı için 'getutxent_wtmp()' tarafından döndürülen ilk giriş girişi son giriş. –

İlgili konular