flockはflockをロックする。
#!/usr/bin/perl open FILE, 'counter.txt'; $counter = <FILE>; close FILE; $counter ++; open FILE, '>counter.txt'; flock FILE, 2; print FILE $counter; close FILE;
プロセスAが書き込み用にcounter.txtをopenしたとき、 counter.txtは0になる。そのときにプロセスBがcounter.txtをopenし、 読み込むと、プロセスBの$counterは0になり、 結果counter.txtにはプロセスBによって1が書き込まれる。
#!/usr/bin/perl open FILE, '+<counter.txt'; flock FILE, 2; $counter = <FILE>; $counter ++; truncate FILE, 0; seek FILE, 0, 0; print FILE $counter; close FILE;