うまいぼうぶろぐ

linuxとhttpdとperlのメモ

perlのflockでファイルの排他制御

  • flock(FILEHANDLE, operation)
1   読み込み宣言ロック(ブロックモード)
2   書き込み宣言ロック(ブロックモード)
5   読み込み宣言ロック(非ブロックモード)
6   書き込み宣言ロック(非ブロックモード)
8   ロック解除(アンロック)

排他制御といっても、flockがファイルのロックを宣言して、待っているだけなので、

1. flockでロックしてファイルhogeに書き込み
2. flockを使わないでファイルhogeに書き込み

という操作が同時に行われても2番のプロセスはロックされたりしない。

あとperlに限らず、nfs上でのflockは保証されないかも。