- 802 名前:nobodyさん [2005/06/06(月) 21:34:45 ID:nLjgLi0T]
- sub create_lock {
for ($i = 0; $i < 10; $i++) {#10回繰り返す return if link($0, $lock);#link関数でロックファイルが作成できれば終了 sleep(1);#作れない場合は1秒スリープしてから再挑戦 } print "BUSY";#10回以内にロックできない場合はBUSYと表示 exit;#スクリプト終了 } ↑だとうまくいくのに、↓だとうまくいかないのは何ででしょうか? ↓ですとsleepを5回繰り返した後&error("BUSY")の処理をします。 sub create_lock { local($retry) = 5; # 1分以上古いロックは削除する if (-e $lockfile) { local($mtime) = (stat($lockfile))[9]; if ($mtime < time - 60) { &unlock; } } while (!mkdir($lockfile, 0755)) { if (--$retry <= 0) { &error("BUSY");#5回以内にロックできない場合はBUSYと表示 } sleep(1); } exit; }
|

|