- 在文件是
load
-ed/require
-d时,文件是否被锁定? - 如果没有,我怎么能独占锁定从期间
load
/require
写入文件?
也许,File#flock
应该如果是这样使用的,但我不知道答案的第一个问题,以及如何将其与load
/require
结合起来。加载期间锁定文件/要求
load
-ed/require
-d时,文件是否被锁定?load
/require
写入文件?也许,File#flock
应该如果是这样使用的,但我不知道答案的第一个问题,以及如何将其与load
/require
结合起来。加载期间锁定文件/要求
当打开一个文件时,你拥有的唯一的保护是如果文件被删除,从文件系统在技术上未链接和孤立的,你仍然可以读取其中的内容。从该点开始,关闭文件将失去对它的任何访问权限。这就是它是如何工作的POSIX类型的系统在任何情况下Windows可能是不同。
没有什么,以防止过度写入文件的一部分或截断它,而你的进程试图做它的东西另一个进程。
请记住File#flock
只是一种礼貌的请求锁定方式,除非其他正在操作文件的进程是礼貌的并且检查您对文件状态没有任何保证。进程可以自由地忽略它,并在没有警告的情况下修改文件。
确保没有人接触到您的文件的唯一方法是将其复制到专用/tmp
目录,测试该东西是否正确复制,然后从中读取它。这是一个非常偏执的事情,所以我希望你在走这条路之前有一个令人信服的理由。
如果你能控制所有访问您的文件的过程,使他们乖巧的公民,并使用一个一致的锁定机制,你可能会被罚款的文件。如果情况并非如此,您可能希望拥有一个主进程,使用某种IPC信令独占授权访问这些文件。
设定,当你需要一个文件的系统调用的是红宝石显示红宝石不获取该文件的锁,你可以在任何Linux系统上使用'strace的红宝石-r设置-e“Set.new''验证这一点安装'strace',所以你建议可能是唯一的方法 – bjhaid