c - 在 Linux 中为 NTFS 执行 ls 命令

标签 c filesystems operating-system 64-bit ntfs

我正在尝试构建一个类似 bash 的脚本,提供一些功能,例如 ls、pwd、cat 等,在 Linux 系统中使用 NTFS。假设我有一个 NTFS 图像并使用 fopen 将其作为文件打开。然后,我读取了一些扇区,例如位于 0x0B 的 BPB,并获取了一些关于 NTFS 镜像的一般信息。我需要到达根目录指针然后遍历文件系统以实现这些功能,尤其是 ls 和 pwd。我在谷歌上搜索了很多关于 NTFS 的内部细节和偏移量的信息,但我找不到如何实现这个目标。没有易于理解的文档或示例,我无法取得进一步进展。

任何帮助、文档、提示、偏移量表等都将不胜感激。

谢谢。

最佳答案

我猜这是一个学习练习。所以,首先:

  1. 写一个 bash像解释器 一样针对特定的文件系统是错误 的做法。 您应该专注于理解 NTFS 文件系统的细节。

  2. 写作 ls , cat 能够处理特定文件系统中的文件是错误的做法。 您应该专注于理解 NTFS 文件系统的细节。

  3. 如果您编写一个文件系统驱动程序(比如使用 FUSE ),那么原始的 bash , ls , cat将自动使用该文件系统。因为驱动程序将能够翻译像 open 这样的系统调用。和 read进入文件系统特定程序。

最后:

  1. 了解 FUSE .这是棒极了。看这个 Hello World FUSE module .运行它,玩它。

  2. 下载 NTFS-3G 的源代码,这是当今大多数 GNU/Linux 发行版使用的 NTFS 驱动程序。它使用 fuse 。了解它的工作原理。

关于c - 在 Linux 中为 NTFS 执行 ls 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10905306/

相关文章:

c - 如何使 Ubuntu 命令在 Windows 上运行

c - 由于连接突发,套接字连接被拒绝

linux - 无法增加 qemu 原始图像文件大小

javascript - 将 PNG Canvas 图像保存到 HTML5 存储(JavaScript)?

binary - 可执行文件实际上包含什么?

operating-system - Linux 中的分段 : Segmentation & Paging are redundant?

c - 对于具有预定义值的变量的行为不同

c - fgetc 返回一个奇怪的字符

c - 用户单击顶部栏时应用收到的消息

filesystems - 文件的 MD5 哈希在每个系统上都是唯一的吗?