objective-c - 是否有任何函数可以检索与 inode 关联的路径?

标签 objective-c macos inode

我正在编写一个实用程序,它可以遍历 Mac OS X(10.6 及更高版本)上的目录树,并尝试检测自目录上次与备份位置同步以来发生的更改。

当我最初同步文件和文件夹时,我获取 inode 号并将其存储在该文件或文件夹的数据库记录中:

NSString *oldFilePath = /* ... */;
NSError *error = nil;
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:oldFilePath error:&error];
/* set database record for oldFilePath to [attributes fileSystemFileNumber] */

当我遇到新文件或文件夹时,我首先使用 inode 号进行数据库查找,以查找原始文件(如果有)。

但在文件已从父目录移动到子目录的情况下,并且我试图检测对父目录的更改,我希望能够使用保存的 inode 号来识别新路径这样我就可以区分移动和删除。

最佳答案

在 Mac 上,GetFileInfo 命令执行 inode 编号的反向查找。

GetFileInfo /.vol/234881029/344711

应该产生:

file: "/path/to/file"
...

Martin R 的答案仅适用于目录。

关于objective-c - 是否有任何函数可以检索与 inode 关联的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933056/

相关文章:

c - inode实际上是否指向磁盘中的地址?

linux - 要删除哪个 Linux header ?

objective-c - 如何从模拟器中的核心位置获得所需的精度?

ios - UILocalNotification 已触发但未安排

objective-c - NSNumberFormatter 干扰 NSString intValue

cocoa - 将 FTP 与 NSURL 一起使用

objective-c - 旋转、更改颜色并从 NSImage 获取 RGB565 数据

objective-c - @selector 和其他类(Objective-C)

macos - 在带空格的目录中查找最后修改的文件

filesystems - inode 号和文件描述符有什么区别?