2012-04-25 69 views
1

我正在處理使用各種數據結構來存儲和排序數據的任務。數據結構部分對我來說非常簡單,但是,我正在讀第一步,讀取/解析wtmp文件。我以前解析過幾個文件,但從來沒有解析過二進制文件。解析這樣的文件有什麼竅門?提前致謝。如何讀取wtmp文件?

+0

'man 5 wtmp'描述了這個文件的格式,但是解析(last)的(文本)輸出可能比直接解析它更容易。我不認爲標準C庫中有API讀取'wtmp'。 – 2012-04-25 21:41:55

回答

4

嘗試使用utmp.h

+0

謝謝,這就是我一直在尋找的。 – kubiej21 2012-04-25 22:42:55

2

這裏是一個如何解析它的例子,你需要將文件的字節讀入utmp結構。你應該真的檢查手冊頁的所有細節,這與使用標準C庫讀取文件不同。

#include<stdio.h> 
#include<fcntl.h> 
#include<utmp.h> 

int main() 
{ 
     int fd; 
     struct utmp cr; 
     int reclen = sizeof(struct utmp); 

     fd = open(WTMP_FILE, O_RDONLY); 
     if (fd == -1){ 
     perror("oops"); 
     exit(1); 
     } 
     while (read(fd, &cr, reclen) == reclen) 
     printf("-- %s\n", cr.ut_user); 

     close (fd); 
     return 0; 
}