タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

flockに関するkiryuuのブックマーク (2)

  • ファイルのロックに関する基礎知識 - とほほのWWW入門

    1: open(IN, $file); # ファイルを開く 2: $count = <IN>; # カウンターを読み出す 3: close(IN); # ファイルを閉じる 4: $count++; # カウンターをひとつ増やす 5: open(OUT, "> $file"); # ファイルを開く 6: print OUT "$count\n"; # ファイルにカウンタを書き込む 7: close(OUT); # ファイルを閉じる 8: print "$count\n"; ところが、この実装には問題があります。Aさんが5行目を実行し終えて6行目を実行するまでの間の僅かのタイミングに、Bさんが1行目と2行目を行うと、Bさんは空のファイルを読んでしまうことになります。文字 "" に1を加算すると値は1。これをBさんがファイルに書き込むと、カウンターファイルの破壊(カウンター値のリセット)が発生し

    kiryuu
    kiryuu 2011/02/17
  • Perlの排他制御 (flock,open,symlink,mkdir,rename)

    ファイル操作の排他制御といえば、以下のものが代表的です。 flockとロックファイル(ディレクトリ)式に大きく分けられます。 ロックファイル(ディレクトリ)を使う open関数 symlink関数 mkdir関数 rename関数 古いロックファイル(ディレクトリ)の削除 シグナルトラップ flockを使う flock関数 読込モード 追加モード 上書き・読み書きモード エラー処理 まとめてロックする タイムアウト ■ロックファイル(ディレクトリ)を使う 基は単なる使用中の目印です。目印が無いときに入って、自分で目印を作り、操作が終わったときに消して出るだけですね。トイレみたい(^^) で、使用中なら何回かノックします。(せかすな〜) open関数 ファイルオープン関数でファイル作成。 1.ファイルが存在するか。 2.しなければ作成。 と2段階を要するので、その隙に他のプロセスが

  • 1