什么是块级访问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, &sector_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

您将需要是当然的根。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top