我不知道是否有任何特殊的可可功能來獲取用戶登錄/註銷時間。
但是,您可以使用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()返回的第一個登錄條目是最後一次登錄。 –