電子書籍の厳選無料作品が豊富!

open(DB,"$file") ;でデータを開くだけでデータが破損することはありますか?


たとえば

open(DB,"$file") ;
flock(DB,2);
@lines = <DB>;
close(DB);
flock(DB,8);

のように@linesにデータを格納します。

$fileに上書きはしません。

上記ファイル操作だけで、同時接続があったときにファイルが破損することはありますか?

ファイルロック関数を付けた方がいいですか?

A 回答 (1件)

基本、読むだけでファイルが壊れることはありません。


が、このプログラムがファイルを破壊する可能性はあります。

・ミス、または故意で $fileの先頭が'>'になった場合。上書きしないつもりが新規上書きになってしまいます。
よほど古いバージョンで無いのなら、 openにはモードとファイルを区別できる3引数版を利用しましょう

・このread中に別の処理でファイルが書き換えられてしまい、@linesの中身が変になった場合。
@linesを書き戻す処理があったら、そこで壊れる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!