我已经实施了一个"安全的保存"的操作,是这样的:

  1. 保存的一些数据临时文件 A
  2. 复制的内容 A 最终的目的地 B
  3. 删除 A

我有一个竞争条件在步骤3Mac OS X偶尔会回来的错误-47(fBsyErr)当试图删除文件的使用 FSDeleteObject.我完全相信我是唯一一个修改这个文件和怀疑该系统在做什么(例如,背景缓存的任务)的时候我试图删除的文件,从而在错误。

这是一个间歇性问题:通常的 FSDeleteObject 呼叫。在这些情况下,我得到的错误代码,我想安全地删除的文件"在稍后的时间点"时,系统完成之后使用它。

什么是最好的行动采取在试图删除这个麻烦的临时文件?

有帮助吗?

解决方案

这里的 发生了什么:

  1. 最常见的原因 FSDeleteObject 暂时没有 fBsyErr 是聚光灯的过程中编制索引的文件。如果修改文件,靠近它,然后立即试图要删除它的使用 FSDeleteObject, 它很可能是聚光灯下的索引将有打开它,你就会得到 fBsyErr.
  2. 一些第三方的抗病毒扫描仪也可以触发这个问题。当你接近一个修改的文件中,抗病毒扫描仪立即开始检查它的病毒。如果它仍然检查时,你试图要删除的文件, FSDeleteObject 将失败 fBsyErr.

每个问题都有一系列的变通办法,最好对都是使用 unlink

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top