c - 我如何读取和遍历 inode

标签 c filesystems ext2

我已经在 EXT2 文件系统中打开了 super block 和组描述符,但我不知道如何读取例如根目录或其中的文件...

这是我得到的一些东西

fd=open("/dev/sdb2", O_RDONLY);
lseek(fd, SuperSize, SEEK_SET);
read(fd, &super_block, SuperSize);
lseek(fd, 4096, SEEK_SET);
read(fd, &groupDesc, DescriptSize);

但是下一部分似乎不起作用...

lseek(fd, super_block.s_log_block_size*groupDesc.bg_inode_table, SEEK_SET);
lseek(fd, InodeSize*(EXT2_ROOT_INO-1), SEEK_CUR);
read(fd, &root, InodeSize);

最佳答案

我不太确定你在问什么,但这里是:

要读取目录的内容,您基本上需要查看其指针 block 内部,查看指针指定的磁盘上的相应 block ,并读取在那里找到的内容以获得目录中文件的描述.

这是一个相当高级的建议,但剩下的实际上归结为处理系统结构本身的细节。

我建议看一下第 4 章:

https://www.nongnu.org/ext2-doc/ext2.html

还要确保你清楚你的案例中涉及的特定结构,这些结构应该在作业的某个地方为你提供...

关于c - 我如何读取和遍历 inode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287606/

相关文章:

c - 在很小的内存中表示非常大的位数组

c - 编写 Return-to libc 攻击,但无法使其正常工作?

javascript - 在 MongoDB 集合中查找字符串

iphone - 如何在iPhone上获得可写路径?

linux - 结构 super_block 和 ext2_super_block

c - 为什么 C 程序给出正整数的错误输出?

c++ - 我的程序在不同的机器上给出不同的输出..!

php - 如何在 PHP 中创建合适的相册应用程序?

c - 获取 ext2 镜像中的特定 inode (C)

自定义内核 : Implement filesystem