如果我做是ruby rm_rf异步?
rm_rf('somewhere')
mkdir('somewhere')
每隔一段时间,mkdir
抛出一个Permission Denined
。这是因为rm_rf
异步运行,有时在mkdir
运行之前没有完成删除目录?
我如何让它阻塞,直到它完成删除?
在Windows btw上运行这个。
由于
如果我做是ruby rm_rf异步?
rm_rf('somewhere')
mkdir('somewhere')
每隔一段时间,mkdir
抛出一个Permission Denined
。这是因为rm_rf
异步运行,有时在mkdir
运行之前没有完成删除目录?
我如何让它阻塞,直到它完成删除?
在Windows btw上运行这个。
由于
听起来像NTFS的功能,请参阅Microsoft Suppport:
此文件是在被称为待删除的状态。这个文件已被删除,但仍有句柄对它开放。在更新索引之前,NTFS将等到 关闭此文件的所有句柄。但是,如果尝试访问文件 ,则NTFS将拒绝 尝试。由于文件在索引中列出,但实际上删除了 ,因此您可以看到该文件但无法访问它。
看着解决方案,我认为除了等待和重试之外,没有太多的事情要做。
rm_rf
是同步,因为任何其它常用的方法红宝石。
如果它不是那么你可能会得到一个Errno::EEXIST
错误,但你会得到'权限被拒绝'。
作为一种解决方法尝试插入小的延迟,像sleep(0.1)
rm_rf
之间& mkdir
这确实可以解决它 –
听起来很像它 –