[トップページ] [戻る]
#! /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