【问题标题】:Is an atomic-rename possible in Mac VFS/HFS+?在 Mac VFS/HFS+ 中是否可以进行原子重命名?
【发布时间】:2011-01-11 20:13:01
【问题描述】:

在 Mac OS X 中支持 ACL,有一种方法可以将文件声明为可写但不可删除。

这会给原子写入带来问题,因为 VFS 中的 renamecurrent implementation deletes 是预先存在的目标。如果您有一个现有的文件,您对其具有写入权限,则可能无法自动写入:
只需附加一个声明 deny delete 的 ACL,原子写入(如由各种 Cocoa API 实现的 - 例如 NSArray's writeToFile:atomically:)将失败,而非原子写入将很高兴成功。

由于我对低级 C 代码的理解相当有限:
只有轻微(插入您最喜欢的“轻微”定义)头痛的替代实现是否可行?

谢谢

丹尼尔

【问题讨论】:

    标签: osx-snow-leopard darwin vfs hfs+


    【解决方案1】:

    一种可行的替代方法似乎是在临时目录中创建文件,然后在两个文件上调用exchangedata。 HFS 导出 VOL_CAP_INT_EXCHANGEDATA 属性,所以应该可以。 vfs_syscalls.c 中的相关检查表明调用成功只需要读取和写入权限。

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2022-10-25
      相关资源
      最近更新 更多