[トップページ]
[戻る]
#! /usr/local/bin/perl
#
#-------------------------------------------------------------
# flock()を使わないファイルロック
#-------------------------------------------------------------
#
# ファイルロック
&file_lock;
# ファイル読み込み
if (open(IN, "test.dat")) {
$count = <IN>;
close(IN);
}
else {
print "open error!!";
exit;
}
$count++;
# ファイル書きこみ
if (open(OUT, "> test.dat")) {
printf(OUT "%d\n", $count);
close(OUT);
}
else {
print "open error!!";
exit;
}
# ファイルロック解除
&file_unlock;
exit;
#-------------------------------------------------------------
sub file_lock {
$retry = 3; #リトライ回数を設定
while (-e "test.lock") {
if (--$retry <= 0) {
&time_out;
}
sleep(1); # 1秒待ってみます
}
open (LOCK, "> test.lock") || die "error";
close (LOCK);
}
#-------------------------------------------------------------
sub file_unlock {
unlink ("test.lock"); #ロックファイルを削除します
}
#-------------------------------------------------------------
sub time_out {
print "Busy now!!";
exit;
}
[トップページ]
[戻る]
Copyright (C) 2000 Me All rights reserved
Mail To webmaster