load
-ed / require
-d期间,文件是否被锁定写?load
/期间独占锁定文件以防止写入require
?File#flock
如果可能的话,应该使用它,但是我不知道第一个问题的答案以及如何将其与load
/结合使用require
。
打开文件时,仅有的保护是文件被删除,从文件系统取消链接并成为孤立的文件后,您仍然可以读取其中的内容。从那时起,关闭文件将无权对其进行任何访问。这就是它是如何工作在任何情况下,POSIX类型的系统中,Windows可能会有所不同。
没有什么可以防止另一个进程在您的进程尝试执行其操作时覆盖文件的一部分或将其截断。
请记住,File#flock
这只是请求锁的一种礼貌方式,除非要操纵该文件的其他进程礼貌并且检查您对文件状态的保证没有任何保证。进程可以随意忽略它,并在不发出警告的情况下处理您的文件。
确保没有人触摸您文件的唯一方法是将其复制到私有/tmp
目录,测试该文件是否正确复制,然后从那里读取文件。这是一件极其偏执的事情,所以我希望您在走这条路之前有一个令人信服的理由。
如果您可以控制访问文件的所有过程,并使它们成为行为良好的公民,并对文件使用一致的锁定机制,则可能会很好。如果不是这种情况,您可能希望拥有一个主进程,该进程使用某种IPC信令以独占方式授予对文件的访问权限。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句