cocoa - 如何确定Cocoa中两个路径是同一个文件的硬链接(hard link)?

标签 cocoa inode hardlink

我需要在运行时为路径长度超过 255 个字符的文件创建硬链接(hard link)(这是针对令人恼火的 Excel/Word 2011 限制的解决方法)。但由于稍后可能会再次打开同一个文件,如果我已经在第一次创建它的路径中拥有它,我不想重新创建硬链接(hard link)(我有一个方案来使用UUID)。这意味着我需要检查已经“缓存”的文件是否仍然是我为用户打开的文件的硬链接(hard link)。所以我需要检查两个路径是否是同一文件的硬链接(hard link)。我意识到在测试时存在潜在的竞争条件,但硬链接(hard link)完全由我的应用程序管理。

最佳答案

这是现代的方法:

NSError* error;
id fileID1, fileID2;
if (![url1 getResourceValue:&fileID1 forKey:NSURLFileResourceIdentifierKey error:&error])
    /* handle error */;
if (![url2 getResourceValue:&fileID2 forKey:NSURLFileResourceIdentifierKey error:&error])
    /* handle error */;
if ([fileID1 isEqual:fileID2])
    /* URLs point to the same file (inode) */;

NSURLFileResourceIdentifierKey 正是为此目的而设计的。

关于cocoa - 如何确定Cocoa中两个路径是同一个文件的硬链接(hard link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23833714/

相关文章:

macos - 在 macOS 窗口上插入 X - 和 + 按钮

java - 给出inode信息,我们如何在Java中获取文件路径?

c - 如何获取 Solaris/Unix 上文件系统的 inode 计数?

c# - 如何知道两个硬链接(hard link)是否指向同一个inode? (C#)

linux - 指向文件的硬链接(hard link) ant stat st_nlink 不匹配

objective-c - NSNumber 到 NSString(如果有小数则不带尾随零)

objective-c - 如何使用自定义 View 隐藏菜单项?

Django:复制文件字段

c - 硬链接(hard link)与其在 C 中的程序之间的区别

cocoa - Apple 不再接受使用 QuickTime API 的应用程序提交