広告
広告
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();
広告