flockの前に、open(OUT,">outfile.txt")がダメな理由

[上に] [前に] [次に]
KAN 1999/07/21(水) 23:51:51
open(OUT,">outfile.txt");
flock(OUT,2);
は、ロックする前にファイルサイズを0にしてしまうので良くな
いと、こちらに書いてありますが、なぜいけないのでしょうか。
他のプロセスはどうせ読み書きできないですし・・・。

とほほ 1999/07/22(木) 04:47:09
  open(OUT, "> outfile.txt");
  flock(OUT, 2);
という処理は、内部的には
 (1) outfile.txtをオープンする。
 (2) outfile.txtの内容を0にする。
 (3) outfile.txtに書き込みロックをかける
という処理を行います。ここで、他のプロセスが、(2)と(3)の処理の間に
 (a) outfile.txtをオープンする。
 (b) outfile.txtの内容を読み出す。
ってことをやってしまう可能性があるので、まずいです。

KAN 1999/07/22(木) 08:36:00
[[解決]]
 納得できました。
 御回答、どうも有り難うございました。

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