我有一个与Linux文件系统相关的实验室工作。问题是我需要检索软盘映像中的所有目录和文件。使用C语言获取FAT12格式化软盘映像的目录和文件名是必需的。
以下是我现在所做的事情:
以下是我完全不知道的事情:
现在我需要你的帮助,向我展示解决这个问题的条目。一些提示或文件也对我有很大的帮助!
答案 0 :(得分:2)
您需要做的是在C中打开复制的图像。您需要阅读此数据,了解FAT12格式,修改它,然后将其写回。
看看fopen,fread,fclose使用“man”。您可能需要创建一个FAT结构数组,使用fread读入每个FAT条目,然后使用新条目修改数组并使用fwrite将其写回。您可能希望使用fseek跳转。我希望你想要写一个新的条目到磁盘FAT表(原文如此),并知道可用空间在哪里,写那里的实际文件。
1)fopen 2)将FAT转换为数组(根据需要使用fseek) 3)使用新条目修改数组 4)将新文件的数据写入图像的适当空闲区域 5)将更新的数组转换回FAT 6)fclose 7)测试图像
您可以通过以下方式测试图像:
mkdir / mnt / test -p mount -o loop -t vfat test.img / mnt / test
如果失败了,那么你就搞砸了。使用hexdump检查文件。 如果有效,请确保在再次修改文件之前将其卸载。
答案 1 :(得分:0)
根据我的理解,您应该在纯用户空间程序中读取磁盘映像中的数据。换句话说:编写任何内核代码或驱动程序都需要 。
此任务只能使用标准C API,不需要特定于Linux的调用。
答案 2 :(得分:0)
我为前雇主写了一个完整的实施方案。幸运的是,FAT 非常 得到很好的支持,因为二进制格式和文件系统都会得到支持。
对此的规范性参考是Microsoft specification(FAT由Bill Gates于1976年构思),其中包括FAT12,FAT16和FAT32,它们都非常相似。
当您在用户空间工作时,C stdio库将满足您的所有需求。