2011-01-11 62 views
0

在Mac OS X中支持ACL,有一种方法可以将文件声明为可写但不可删除。在Mac VFS/HFS +中可以进行原子重命名吗?

由于VFS 中的的current implementation是预先存在的目标,所以这会造成原子写入的问题。如果你有一个现有的文件,你有写权限,有可能是无法以原子写:
只需装上,指出deny delete的ACL和原子写入(如通过各种可可的API来实现 - 比如NSArray's writeToFile:atomically: )会失败,而非原子写入会很高兴成功。

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

感谢

丹尼尔

回答

1

一个可行的替代方案似乎创建一个临时目录中的文件,然后调用这两个文件exchangedata。 HFS导出VOL_CAP_INT_EXCHANGEDATA属性,所以这应该工作。 vfs_syscalls.c中的相关检查表明,只有读取和写入权限才能使呼叫成功。

+0

不错!我不知道`interchangeata` ... – danyowdee 2011-03-22 18:56:24

相关问题