🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.perl
Article #244

Re: ファイルの行数とロック

#244
From: Maki Watanabe
Date: Sun, 22 Feb 1998 00:00
51 lines
2579 bytes
Seiichirou Hiraoka wrote:
> やっぱりwcを使うのが良いですか。

ちゃんと計測しないとわかりません。:-)
が、行数が多くなるほど wc の方が有利になるような
気がします。
 
> Programming perl(ラクダ本?)のflockの項をみましたが、いまいち分りません。
> 例えば、flock("./dummy",$LOCK_EX);などとすると、./dummyというファイルに
> 排他ロックがかかるのだと思うのですが、どのような効果があるのでしょうか。

-----------------------------------------------------
flock(FILEHANDLE,OPERATION)

FILEHANDLEに対してflock(2)を実行する。OPERATIONについては
flock(2)のマニュアルページを参照の事。
( Programming Perl, Larry Wall and Randal L.Schewartz著, 近藤嘉幸訳 )
-----------------------------------------------------

従って、flockの第一パラメータはファイルハンドルです。

$LOCK_EX = 2;
$LOCK_UN = 8;

open(H,"< lockfile") or die;
flock(H,$LOCK_EX) or die "Could not get the lock.";

# いろいろな処理

flock(H,$LOCK_UN) or die "Could not release the lock";
close(H);


> 例えば、排他ロックをかけたファイルを開こうとしたらエラーになるとか、
> 書き込もうとしたらエラーになるとか、そういう具体的なモノでは無いのでしょうか。

詳しくは man page の flock(2) をお読みいただくとして、
flockはアドバイザリ・ロック機構です。簡単に言うと、ロックを取り合う
プログラムどうしで、ロックがかかっているか確認しながら使うものです。
排他ロックされているファイルハンドル( Cの場合はファイルディスクリプタ )
に対して他のプログラムが flock でロックを取得しようとすると
ロックが取得できるまで待たされます。( ノンブロックマスクを
設定していない場合 )

flockの対象ファイルは変更対象ファイルでもかまいませんし、特定の
ロックファイルでも構いませんが、ロックを使うプログラムの間では
合意があることが必要です。

Read The Manual.
mw
Technical Details
Message-ID: <34EFF52D.A68E2055@tko.dec.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6cic57$egr$1@stcn-www.stnet.ad.jp> <34ED0773.45055E4A@tko.dec.com> <6cjci9$sn$1@stcn-www.stnet.ad.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 1043e7,31be2b21ec0df5a2
X-Google-Attributes: gid1043e7,public
From: Maki Watanabe <watanabe.maki@tko.dec.com>
Subject: Re: ファイルの行数とロック
Date: 1998/02/22
Message-ID: <34EFF52D.A68E2055@tko.dec.com>
X-Deja-AN: 327479155
Content-Transfer-Encoding: 7bit
References: <6cic57$egr$1@stcn-www.stnet.ad.jp> <34ED0773.45055E4A@tko.dec.com> <6cjci9$sn$1@stcn-www.stnet.ad.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Organization: Digital Equipment Corporation Japan
Newsgroups: fj.lang.perl