• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

红宝石文件锁定错误Errno :: EBADF在solaris

ruby 来源:Karthi1234 7次浏览

我试图锁定一个可执行脚本,以确保它在第二次运行时不会运行。这里是我的代码,红宝石文件锁定错误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 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)