flock FILEHANDLE,OPERATION

広告

広告

解説

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

参照

広告

Copyright (C) 2003-2006 七鍵 key@do.ai 初版:2003年07月07日 最終更新:2006年08月08日