2011-12-13 52 views
4

如果我做是ruby rm_rf异步?

rm_rf('somewhere') 
mkdir('somewhere') 

每隔一段时间,mkdir抛出一个Permission Denined。这是因为rm_rf异步运行,有时在mkdir运行之前没有完成删除目录?

我如何让它阻塞,直到它完成删除?

在Windows btw上运行这个。

由于

回答

4

听起来像NTFS的功能,请参阅Microsoft Suppport

此文件是在被称为待删除的状态。这个文件已被删除,但仍有句柄对它开放。在更新索引之前,NTFS将等到 关闭此文件的所有句柄。但是,如果尝试访问文件 ,则NTFS将拒绝 尝试。由于文件在索引中列出,但实际上删除了 ,因此您可以看到该文件但无法访问它。

看着解决方案,我认为除了等待和重试之外,没有太多的事情要做。

+0

听起来很像它 –

3

rm_rf同步,因为任何其它常用的方法红宝石。

如果它不是那么你可能会得到一个Errno::EEXIST错误,但你会得到'权限被拒绝'。

作为一种解决方法尝试插入小的延迟,像sleep(0.1)rm_rf之间& mkdir

+0

这确实可以解决它 –