列出根目录中的内容[C编程]

问题描述 投票:1回答:2

我正在寻找一种从“根目录”中提取数据的方法。

这是使用FAT 12软盘映像。这是Ubuntu版本14.04.2。

我希望能够读取根扇区中找到的根条目(根据我的理解这是扇区19-32),然后我希望能够显示存储在条目中的内容(文件名,目录名) )。这需要用于系统级编程。

traverse(){
    unsinged char buf[1000];
    int fd = open("CDBOOT1.IMG", O_RDONLY);
    lseek(fd, 19 * 512, SEEK_SET);
    read(fd, buf, 512);
}

我想了解一些关于如何解析buf数组中的信息以获取我想要的信息的信息。这是一个家庭作业,所以我不是在寻找具体的答案,但可能有一些资源如何做到这一点。

更新:从建议,我使用了一些其他代码(已经由其他人编写),以便它将打印我试图从中获取根数据的扇区的HEX数据(我可以发布代码,如果它是必要)。使用HEX表,我仍然不确定如何解释数据以获取文件信息,目录信息,创建日期等。

c file ubuntu system
2个回答
1
投票

我过去做过FAT解析。如果你不习惯它可能会很棘手。

我强烈建议的一件事是对你在C中读取的内容进行十六进制转储,并将其保存在一个文件中,然后将其放在一个好的十六进制编辑器中,这样你就可以验证你的算法是否正确并且事情是如何布局的如你所料。一切都交叉检查你从规范中获得了什么。

这是一个规范:

http://www.maverick-os.dk/FileSystemFormats/FAT12_FileSystem.html


1
投票

你真的在这里寻找两件事。 FAT包含表示集群和集群片段的数据。但是你也想阅读DET(目录条目表)来获取这样的名字和类似的东西。

所以你真正需要做的就是从这里开始:

http://en.wikipedia.org/wiki/File_Allocation_Table

并阅读这些东西是如何设计的。即使是图像文件,这也不是简单或简单的代码。图像文件甚至可以在其中嵌入用于读取和写入的软件。

© www.soinside.com 2019 - 2024. All rights reserved.