Perlについての質問箱 33箱目
■ このスレッドは過去ログ倉庫に格納されています
0801デフォルトの名無しさん
2007/12/25(火) 22:12:46バージョンはPerl 5.005。また、DBは使えないとします。
以下の2つのプログラムが並行して走っています。
プログラムが走る頻度は、Prog1 >>> Prog2 とします。
Prog1:hoge.txtを読み込み、何らかの処理を行った上で新たなデータを書き込む。(上書きまたは追記)
Prog2:hoge.txtを読み込み、処理を行った上でhoge.txtそのものを削除する。(中身を空にするのではない)
個人向けウェブサイトによくあるCGIアクセスカウンタのようなものだと思ってください。
具体的には、Prog1がカウンタで、Prog2でカウンタの「現在の値」を利用した処理を行うというものです。
Prog2でファイルを削除したあとにProg1が実行された時は、hoge.txtが新規作成されるものとします。
Prog1だけ動いている分には、いくらでも排他制御のしようがあるのですが、
Prog2でファイルを削除する部分をどのように実装すればよいか分かりません。
ファイルの中身を空にするだけならflockによる排他制御でいいのですが。
open(FH,"+>>$filename");
flock(FH,LOCK_EX);
#何らかの処理
close(FH); #ここでロック解除
unlink($filename); #ロック解除後にファイル削除するのでマズそう
■ このスレッドは過去ログ倉庫に格納されています