我在EXT2文件系统中打开了超级块和组描述符,但我不知道如何读取例如根目录或其中的文件…
这是我得到的一些东西
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);
我不完全清楚你在问什么,但是这里有:
要读取目录的内容,您基本上需要查看它的指针块,查看指针指定的磁盘上的相应块,并读取在那里找到的内容以获取目录中文件的描述。
这是一个相当高级别的建议,但其余的真正归结为系统结构本身的细节。
我建议查看第4章: http : //www.nongnu.org/ext2-doc/ext2.html
并确保你清楚你的案件中有关的具体结构,这应该在任务的某个地方为你提供……
块组描述符是遍历ext文件系统所需的全部内容。 超级块为您提供有关文件系统的一般信息,以及块组描述符(BGD)的位置。 进入BGD后,您可以获得有关文件系统中每个块组的信息。
要查找根目录,那么您需要查看FIRST块组,并检查第二个inode; 也可以从第一个inode的位置,+ sizeof(inode)到达。也可以称为inode编号2。 反过来,第一个inode的位置可以在第一个块组的BGD条目中找到。
如果您需要更多信息,请告诉我。
需要了解更多c/c++开发分享如何读取和遍历inode,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享如何读取和遍历inode相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979455.html