2012-04-25 71 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; 
}