• 締切済み

open() で開くだけで破損するか

open(DB,"$file") ;でデータを開くだけでデータが破損することはありますか? たとえば open(DB,"$file") ; flock(DB,2); @lines = <DB>; close(DB); flock(DB,8); のように@linesにデータを格納します。 $fileに上書きはしません。 上記ファイル操作だけで、同時接続があったときにファイルが破損することはありますか? ファイルロック関数を付けた方がいいですか?

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

基本、読むだけでファイルが壊れることはありません。 が、このプログラムがファイルを破壊する可能性はあります。 ・ミス、または故意で $fileの先頭が'>'になった場合。上書きしないつもりが新規上書きになってしまいます。 よほど古いバージョンで無いのなら、 openにはモードとファイルを区別できる3引数版を利用しましょう ・このread中に別の処理でファイルが書き換えられてしまい、@linesの中身が変になった場合。 @linesを書き戻す処理があったら、そこで壊れる。

関連するQ&A

専門家に質問してみよう