ユーザーログイン/ログアウト時間を取得するための特別なココア関数があるかどうかわかりません。
しかし、getutxent_wtmp()
を使用してログイン/ログアウトの履歴を直接読むことができます。 http://www.opensource.apple.com/source/adv_cmds/adv_cmds-149/last/last.c
だけで非常に簡単な例を与えるために:次のプログラムは、標準出力にすべてのログイン/ログアウト時刻を表示します:
をこれは、ソースコードに見られるように、「最後の」コマンドラインツールは、何をするかです
#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;
}
ありがとう、それは私が必要なものです! :) – Oggy
私はこれに関する別の質問があります。最後の単一ユーザーのログイン名と時間だけを取得することは可能ですか? – Oggy
@Oggy: 'setutxent_wtmp(0)'を使うと、ログイン/ログアウトのエントリが時系列の逆順で返されます。したがって、ユーザのために 'getutxent_wtmp()'によって返された最初のログインエントリが最後のログインです。 –