GDBMのロック機構の信頼性は?

[上に] [前に] [次に]
wosamu 1999/12/09(木) 18:30:05
TurboLinux3.0 perl5でスクリプトを書いているのですが
ファイル操作が面倒なのでGDBMを使うことにしました。
で、以下のコードを書いてちょっと実験してみました。
--ここから
#!/usr/bin/perl
#Test write read create
use GDBM_File;
#予約状況を取得
tie (%TEST,"GDBM_File","TEST",&GDBM_WRCREAT,0644) or die "Can't open file :$!";
sleep 500;
untie (%TEST);
--ここまで
でこいつを二つ起動させたところ、
Can't open file :Resource temporarily unavailable at ./test.pl line 5.
と出てきたわけです。
うまいこと排他的ロックが機能しているようなのですが
このロック機構がどのくらいの信頼性を持っているのか、
ちょっと調べがつきません。
前振りが長いですが
1.GDBMでのロックの機構はほかのmkdirとかflockとかを用いるものに比べて
  信頼性はどうなのか?
2.GDBMに関する日本語の解説のページはないか(別にGDBMじゃなくても大体同じならNDBMとかでも良いです。)
が知りたいのです。
2.はないなら英語でもよいです。
よろしくお願いします。

B-Cus 1999/12/09(木) 21:12:08
gdbm は、コンパイル時に (configure で) flock が使えるか
調べ、使用可能なら flock を、使用不可能なら fcntl を
使うようにコンパイルされます。
# gdbm に限らず、autoconf を使う GNU モノは全部同じように
# コンパイルされますが。

Linux だと flock は使えるでしょうから、強度は flock と
同じでしょう。

> use GDBM_File;
ところで、これって何のモジュールを入れれば使えるように
なるんでしたっけ?

B-Cus 1999/12/09(木) 21:34:07
> これって何のモジュールを入れれば使えるようになるんでしたっけ?
うちのまわりには gdbm が入ってなかったので、perl のインストール時に
GDBM_File もコンパイルされてなかったようです。

wosamu 1999/12/10(金) 00:33:36
レスありがとうございます。
>Linux だと flock は使えるでしょうから、強度は flock と
>同じでしょう。
なるほど。なら安心して使えますね。
どうも自分でロック処理書くのが面倒で。
これでずいぶん楽になります。
>うちのまわりには gdbm が入ってなかったので、perl のインストール時に
>GDBM_File もコンパイルされてなかったようです。
私のも入ってなかったので自分で入れました。
別に標準のでも良かったのですが、GDBMの方が制限が少なかったので。

wosamu 1999/12/10(金) 00:35:00
[[解決]]
あ、解決。

[上に] [前に] [次に]