【问题标题】:File deletion fails sometimes on MacMac 上的文件删除有时会失败
【发布时间】:2015-07-16 18:03:46
【问题描述】:

Technical Q&A 1497this question(其答案复制自技术说明)表明,当从FSDeleteObject 获取fBsyErr 时,正确的解决方法是在10.5+ 上调用FSUnlinkObject

FSDeleteObjectFSUnlinkObject这两个API有什么技术区别 (除了注意到FSUnlinkObject 没有出现在文档中)?为什么 unlink 应该是后备 API 而不是主要 API?

【问题讨论】:

  • “API 函数”**。 API 是一组函数,而不是单个函数;)我是术语纳粹。 /ontopic - 有趣的问题。我的想法是删除它会永久删除它,而 unlink 只是将它从列表中删除(可以这么说),但文件仍然存在。但是,我可能错了。

标签: macos delete-file unlink file-manager


【解决方案1】:

我猜FSDeleteObject 排在第一位是因为它延续了早在 Mac OS 与 Unix 合并之前就存在的一系列文件删除功能,而取消链接文件是 Unix 的概念。

【讨论】:

  • 这是否说明了删除应该是首选调用的原因?如果是这样,我很想念它。
【解决方案2】:

您链接的 Apple 文档非常清楚地解释了差异。 FSUnlinkObject 与 unlink() 具有相同的语义 - 允许删除打开的文件。 FSDeleteObject 不允许删除打开的文件,并在您尝试这样做时返回该错误代码。

【讨论】:

  • 是的,但这并不能解释什么——为什么要删除是主要的,如果忙则取消链接回退?为什么不一直使用 unlink?
  • @Richard:谁说删除是主要的?上面链接的问答说“此 API 调用是在 10.5 及更高版本上删除文件时避免错误的首选解决方案。”但这表明了不要一直使用 unlink 的一个原因:可能是在尝试编写与 OS 10.4 兼容的代码。这可能是写 Q&A 时比现在更大的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多