红宝石文件锁定错误Errno :: EBADF在solaris
我试图锁定一个可执行脚本,以确保它在第二次运行时不会运行。这里是我的代码,红宝石文件锁定错误Errno :: EBADF在solaris
if $0 == __FILE__ if File.new(__FILE__).flock(File::LOCK_EX | File::LOCK_NB)
main()
end
end
并获得以下错误,
# ruby /tmp/test.rb /tmp/test.rb:397:in `flock': Bad file number - /tmp/test.rb (Errno::EBADF)
from /tmp/test.rb:397:in `<main>'
#
现在用红宝石版本1.9.3,
# ruby --version ruby 1.9.3p551 (2014-11-13 revision 48407) [sparc-solaris2.11]
#
但其在Linux环境中工作的完善。
回答:
找到解决方案。在Solaris中,我们需要以读/写模式打开文件,然后才会发生排它锁。
if $0 == __FILE__ if File.new(__FILE__, 'r+').flock(File::LOCK_EX | File::LOCK_NB)
main()
end
end
以上是 红宝石文件锁定错误Errno :: EBADF在solaris 的全部内容, 来源链接: utcz.com/qa/259670.html