5部 関数リファレンス

flock

2011年9月20日
flock FILEHANDLE, OPERATION

引数FILEHANDLEに対応するファイルのロックや解除を行います。成功時には"真"を、失敗時には"偽"を返します。この関数はシステムコマンドのflock/lockf/fcntlのうち、システムがサポートしているものを呼び出します。flockシステムコールが実装されていないマシンでの実行は、致命的エラーとなります。

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

flockではネットワークをまたがって、ロックは行なえません。このためには、fcntlを使ってロックしなくてはなりません。

Comment

コメントを残す

メールアドレスが公開されることはありません。

リズムファクトリーはホームページの制作会社です。
ホームページ制作に関するご要望・ご相談はこちらからどうぞ。