広告
広告
FILEHANDLE に対して flock を呼び出します。成功時には真を、失敗時には偽を返します。flock がインプリメントされていないマシンでの実行は致命的なエラーとなります。flock() ではネットワークをまたがってのロックは行なえませんので、fcntl() を使ってロックしなくてはなりません。
#BSD システムでのメールボックスへの追加処理 $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'}") or die "Can't open mailbox: $!"; lock(); print MBOX $msg,"\n\n"; unlock();
広告