【发布时间】:2012-05-17 16:14:38
【问题描述】:
我需要在 Windows 中找到一个目录的 inode 号。使用_stat 和_stat64 函数,我可以获得文件的inode 和其他信息。但是当我对 Windows 目录使用相同的编号时,它总是为任何目录提供相同的编号。
有什么方法可以找到 Windows 目录的 inode 号吗?
【问题讨论】:
我需要在 Windows 中找到一个目录的 inode 号。使用_stat 和_stat64 函数,我可以获得文件的inode 和其他信息。但是当我对 Windows 目录使用相同的编号时,它总是为任何目录提供相同的编号。
有什么方法可以找到 Windows 目录的 inode 号吗?
【问题讨论】:
st_ino
文件的信息节点(inode)编号 (特定于 UNIX)。在 UNIX 文件系统上,inode 描述文件 日期和时间戳、权限和内容。当文件 它们彼此硬链接,它们共享相同的 inode。 索引节点, 因此 st_ino 在 FAT、HPFS 或 NTFS 文件中没有任何意义 系统。
因此,不要依赖 Windows 系统上的 inode 编号。它是一个 Unix 特定的概念。
请参阅此SO post,了解有关 Windows 如何在没有 inode 但使用类似的东西的情况下管理文件的一些想法。
【讨论】:
Windows 文件系统没有直接模拟大多数 Unix 文件系统中的 inode 编号。
如果您想要唯一且明确地标识相关目录的内容,您可能会发现卷序列号/FileId 组合就足够了。您可以通过将FileInformationClass(第二个参数)设置为FileIdInfo 的GetFileInformationByHandleEx(尽管有名称,但可以检索有关目录的信息)来检索这些。
这大部分对 NTFS 很有用。正如您将在文档中看到的那样,FAT 文件系统的限制非常重要(尽管根据您的需要,它仍然总比没有好)。
【讨论】:
来自维基百科:
索引节点(inode)是传统 Unix 风格文件系统(如 UFS)上的数据结构。 inode 存储有关常规文件、目录或其他文件系统对象的所有信息,但其数据和名称除外。
Windows 使用的常用文件系统不是围绕 inode 构建的 概念,它们是不同的,所以没有“inode number”要报告, 除其他事项外。
这里有一个解释清楚的链接:Inode Explanation
【讨论】: