Ruby-ファイルロック
ファイルロック
flock(operation)メソッドでファイルをロックします。
ロックに成功した場合は 0 を返します。
失敗した場合は例外「Errno::EXXX」が発生します。
File::LOCK_NB が指定されていて、ブロックされそうな場合には false を返します。
f = open("text.txt", "rb")
f.flock(File::LOCK_EX)
file = f.read
f.write(file)
f.flock(File::LOCK_UN)
f.close
File::LOCK_SH
共有ロック。複数のプロセスが同時にロックを共有できます。
システムによってはロック対象のファイルは読み込みモード ("r", "r+" など)でオープンされている必要があります。
そのようなシステムでは読み込み可能でないファイルに対するロックは例外Errno::EBADF が発生するかもしれません。
File::LOCK_EX
排他ロック。同時にはただひとつのプロセスだけがロックを保持できます。
システムによってはロック対象のファイルは書き込みモード ("w", "r+" など)でオープンされている必要があります。そのようなシステムでは書き込み可能でないファイルに対するロックは例外 Errno::EBADF が発生するかもしれません。
File::LOCK_UN
アンロック。この明示的なアンロック以外に、Rubyインタプリタの終了 (プロセスの終了)によっても自動的にロック状態は解除されます。
File::LOCK_NB
ノンブロックモード。File::LOCK_SH | File::LOCK_NB のように他の指定と or することで指定します。この指定がない場合、ブロックされる条件での flock の呼び出しはロックが解除されるまでブロックされます。
File::LOCK_NB の指定がある場合、ブロックされる条件での flock は false を返します。
関連ページ
- Ruby
- Ruby-ファイルロック
- Ruby-OpenSSL暗号化
- Ruby-zlibファイル圧縮
- Ruby-ハッシュを作成する
- Ruby-ログのローテーション
- Ruby-YAML形式ファイルを操作する
- Ruby-WEBrickでwebサーバ
- Ruby-CGIでパラメータを受け取る
- Ruby-CGIセッション