我正试图从vdi文件打开并读入ext2文件系统中的超级块。我想使用ext2.h文件中存在的结构体ext2_super_block(请参见http://lxr.free-electrons.com/source/fs/ext2/ext2.h)。我只想#include <ext2.h>
,但由于我当前的unix操作系统是ext3/ext4,所以头文件不在我的系统中,ext2.h需要包含的任何文件也不在。
我如何才能包含这个文件并获取那个结构?我应该自己构建它(在读入时保存超级块的结构)吗?如果我自己构建它,读入会有什么不同?
到目前为止,我的系统调用完成了这项工作(显然目前不起作用):
fd = open (argv[1], O_RDONLY);
.......check for errors in open
lseek(fd, OFFSET, SEEK_SET); //to skip to superblock
read (fd, &mySB, sizeof(struct ext2_superblock));
您最好使用libext2fs而不是内核头。它知道所有的结构,它应该在用户空间中使用,并且它可以移植到非GNU非Linux主机。