FILEHANDLE
について flock(2)
をコールする。
OPERATION
の定義については flock(2)
のマニュアルを参照のこと。
成功すると true、失敗すると false を返す。
flock(2)
をインプリメントしていないマシンで使用すると
致命的エラーとなる。以下は BSD システム用 mailbox appender である。
$LOCK_SH = 1; $LOCK_EX = 2; $LOCK_NB = 4; $LOCK_UN = 8; sub lock { flock(MBOX,$LOCK_EX); # そして、待っている間に誰かが追加する場合に備えて... seek(MBOX, 0, 2); } sub unlock { flock(MBOX,$LOCK_UN); } open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}") || die "Can't open mailbox: $!"; do lock(); print MBOX $msg,"\n\n"; do unlock();