题
什么是块级访问ext3文件系统的最简单的方法?我不关心这些文件,或原始字节,我只是在时间看FS一个街区。有一个简单的方法来做到这一点(C语言)?或者,也许一个简单的应用程序的源我可以看看灵感?我发现在网络上没有可用的教程,我有点害怕潜入内核源代码,找出如何做到这一点。
解决方案
是,请参阅的e2fsprogs 。这提供了可以用来做任何事情(!)与EXT2,EXT3,EXT4和文件系统工具。它还包含了一个库接口,所以你可以做任何事情。
请参阅附带的debugfs,它可能是足以让你开始。否则,检查出的报头和写一些代码。
其他提示
如果你想要一个简单的应用程序,然后我建议你可以看看“ DD ”实用工具。我当属 GNU核心工具的一部分。它的源代码可供下载。看看它的主页,这里。结果 如果你想实现从C代码相同,那么请参考下面的代码。希望这可以帮助你。 :)
#include <stdio.h>
#include <linux/fs.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define SECTOR_NO 10 /*read 10th sector*/
int main()
{
int sector_size;
char *buf;
int n = SECTOR_NO;
int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
ioctl(fd, BLKSSZGET, §or_size);
printf("%d\n", sector_size);
lseek(fd, n*sector_size, SEEK_SET);
buf = malloc(sector_size);
read(fd, buf, sector_size);
return 0;
}
磁盘设备,并在他们的分区,行为如同一般的文件,您可以读取(和写入),e.g:
head -c 2048 /dev/sda1 > first_2048_bytes
您将需要是当然的根。
不隶属于 StackOverflow