我已经在 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/