たいていの場合はこのとおりの挙動になるので、これを信じてしまってて、おかげでハマりました。 $ cat a.rb open("test.txt", "r+") do |f| #ファイルをopen f.flock(File::LOCK_EX) #ロックする system("ruby b.rb &") #バックグラウンドでb.rbを実行 end #ファイルを閉じる $ cat b.rb open("test.txt", "r+") do |f| f.flock(File::LOCK_EX) end $ ruby a.rbこれをやると、b.rbは固まります。 open("test.txt", "r+") do |f| f.flock(File::LOCK_EX) system("ruby b.rb &") f.flock(File::LOCK_UN) #アンロック endとしたら、固まらなくなり