这是代码,它可以正常工作:
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
但是,这不起作用:
f = File.new('test', File::CREAT | File::RDWR)
f.flock(File::LOCK_EX)
f.flock(File::LOCK_EX)
puts 'Works!'
您能解释为什么吗?我的实际问题是如何使第二个片段起作用?
答案 0 :(得分:2)
如何使第二个片段起作用?
在尝试用LOCK_UN
重新锁定之前,先用LOCK_EX
解锁文件。或不要使用LOCK_EX
。
关于发生这种情况的原因,请参见flock(2)
上的documentation。
如果进程使用
open(2)
(或类似文件)来获取多个文件 同一文件的描述符,将处理这些文件描述符 由flock()
独立进行。尝试使用以下方法之一锁定文件 这些文件描述符可能被锁所拒绝,即调用 进程已经通过另一个文件描述符放置了。