0

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

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

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

谢谢

丹尼尔

4

1 回答 1

1

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

于 2011-03-22T18:10:15.043 回答