【Perl】ファイルロック(排他処理)について語ろう
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/06/23 10:18ID:eY2l+Gw10311perlお勉強ちゅー
02/12/01 14:43ID:???またもやありがとうございます。
rename 後の close を Windows2000 で試したところ、
ご指摘のとおりエラーになりました。
open してから flock するまでに間が空くのがいけないと思い、
今度はフラグを立てるタイプを考えてみましたが、
フラグが立ってるか判別するまでに間が空く・・・
私には解決が難しいので人のソースでもっと勉強してみます。
0312cron
02/12/02 11:25ID:YojCbNB7Perlでロックしていてもcronでroot権限でrenameしてしまえるみたいなんだけど
Perlで複数のユーザーがどんどん書き加えていくファイルを何分か置きに
root権限で実行したい場合 問題の起こらない良い方法はありますか?
0314cron
02/12/02 13:01ID:YojCbNB7そのコマンドのオプションはCGIで書き込ませたいのです。
0315nobodyさん
02/12/02 14:26ID:Vw2f1Ru9ネタだよなぁぁぁぁ、頼むからネタだと言ってくれー
0316cron
02/12/02 15:25ID:YojCbNB70317☆☆☆☆☆
02/12/02 15:47ID:Z6bI7Cqn0318nobodyさん
02/12/02 22:12ID:???オプティミスティック
オプティミスティック
ペシミスティック
ペシミスティック
ペシミスティック
あー、言いにくい
0319nobodyさん
02/12/06 00:00ID:???あのさあ、rootって管理人のことだろ?
どこの鯖缶が赤の他人にroot権限使わせるってのよ。
やるんなら自鯖立ててやんなよ。
0320Perlお勉強ちゅー
02/12/06 01:16ID:???ファイルの排他処理のキーワードらしいとわかってきました。(つもり)
フラグにするものがアトミックというのは、例えれば、
一組のトランプからはクラブの 1 は 1 枚しか引けないからこそ
目印になるということかな。親元になければ誰もカードを取れないものね。
気になったのは、アトミックがいくつかの使われ方をしている事で、
1 : 現在の ファイル I/O では HDD への読み書きは物理的には一つしかできないことに依存してフラグを立てる。
(HDD の複数ヘッドがばらばらに動いてたらこわいです。)
2 : Perl 上で処理全体をアトミックにと言う場合は、「読み」「処理」「書き」を
「1」に依存して、他人(他プロセス)に口をはさませずに行う。
・・・って感じかな。
# 見当違いでしたらつつしんで怒られます。とほ。
# お勉強中途報告でスマソ。
0321cron
02/12/08 07:08ID:tHo7Ijtwroot権限で当然、自サバでするんだよ
cronのことしらないの?
0322nobodyさん
02/12/08 08:24ID:???cronで動かすプログラムとWebプログラムでのファイルのロックが問題なの?
普通のファイルロックと同じようにやればいいじゃん。
0323319
02/12/08 11:44ID:???自鯖でやるなんて一言も言わなかったじゃないか。
そもそも、自分が鯖缶だとも言ってない。
cronでCGI動かすようにすれば? んで、CGIの方でロックをきちんとすればいい。
0324nobodyさん
02/12/08 11:44ID:???0326nobodyさん
02/12/08 12:11ID:???0327nobodyさん
02/12/08 16:05ID:???> Perlで複数のユーザーがどんどん書き加えていくファイルを何分か置きに
> root権限で実行したい場合 問題の起こらない良い方法はありますか?
「複数のユーザが書き換えるファイル」を「root権限で実行」する馬鹿が本当にいると思ってるのか?
0328山崎渉
03/01/15 13:42ID:???0329nobodyさん
03/01/17 10:53ID:t5G3aPWpとかよくやりますが
close(ABC);
閉じるときも
close(ABC) || &error("error");
とやるべきでしょうか?
closeに失敗することあるんでしょうか?
0330nobodyさん
03/01/17 12:29ID:+SxK8G04非常にいい質問だね。
さ、誰か答えてやんなさい。
0331nobodyさん
03/01/17 13:58ID:???0332nobodyさん
03/01/18 00:49ID:???それがどうファイルロックと関係あるのかと
0333nobodyさん
03/01/18 14:04ID:???処理が終了されて、ロック解除できずロックファイルが残る場合。
0334nobodyさん
03/01/18 17:36ID:???どうして上手くいっているのだろうか?
0339世直し一揆
03/01/30 10:23ID:EZ4VgkoJるな!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」、了見が狭い)
●他人に異常に干渉し、しかも好戦的・ファイト満々(キモイ、自己中心)
●自尊心が異常に強く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようと
する(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際に
はたいてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK)
●「常識、常識」と口うるさいが、実はA型の常識はピントがズレまくっている(日本
の常識は世界の非常識)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者に弱く
、弱い者には強い)
●あら探しだけは名人級(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●一人では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「世間体命」、「〜みたい
」とよく言う)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は
個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をし、ストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)
●執念深く、粘着でしつこい(「一生恨みます」タイプ)
●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。しかも冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
0340nobodyさん
03/01/30 12:26ID:RKDiglA0壊れるという現象が頻発して困ります。
なにか他のいい方法を探しているのですが
書き込み待ちテンプを作るやり方があると聞いたのですが
教えてください。
0342nobodyさん
03/01/31 04:05ID:QdG4FrQHどのようにロックかけるのがのぞましいのでしょうか?
0343nobodyさん
03/01/31 07:27ID:K4VaGHSu0344nobodyさん
03/01/31 20:55ID:???0345nobodyさん
03/02/01 03:10ID:6WMjWs0+∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚)< みんなで視姦汁!
./ | \________
.______(___/_____
.|03. 2. 2. / AHE |
.|________________|
/\ \
/ \ 2003年2月2日 \
/ Λ_Λ \ .13:00… \
/__( ´д`)_\______________\
| |ゲ.| │ |
| |.ロ | │ 梅田丸ビルの .|
| |ゲ.| │ 電光掲示板に… .|
| |.ロ | │ ..『(゚д゚)ウマー』 |
|γ__ |ゲ.| │ ̄\ / ̄|
| \ |.ロ | │ \_________/ |
| |ゲ.| │ │
|____|__||_|)|.ロ | │ コ ッ プ 1 杯 .│
|□━□ ) │ . ( 約 200ml ) で |
| J |) / ̄ ̄ |. 1 日 分 の * .|
| ∀ ノ < ヒヒヒヒヒ | 黄色ブドウ状球菌 |
| - ′ . \____ | 2 分 の 1 |
| ) │ │
|/. 製 造 ..| │
| . 逝印大阪工場 . | 500 ml |
|____________________|______________|
http://life2.2ch.net/test/read.cgi/offreg/1043075025/l50
0346nobodyさん
03/02/01 03:23ID:???0347nobodyさん
03/02/19 23:23ID:???0348山崎渉
03/03/13 17:22ID:???0350nobodyさん
03/03/22 18:02ID:???0351nobodyさん
03/04/17 00:56ID:s+I4ylgdhttp://www.din.or.jp/~ohzaki/perl.htm#File_Lock
を使おうと思ったんですが、
なにげにperl初心者なんで、その使い方がわかりません。
perlメモには、
$lfh = my_flock() or die 'Busy!';
# アンロックする
my_funlock($lfh);
$lfh にはなにをいれれればいいのでしょう?ファイル名?ファイルハンドル?
0352nobodyさん
03/04/17 02:26ID:???0353山崎渉
03/04/17 11:58ID:???0354351
03/04/17 22:16ID:PczzXVDVどういうこと?
0355佐々木健介
03/04/17 22:16ID:???/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (5 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < こんなサイトを見つけた
|| | | | \ ┃ ┃/ \ 正直、スマンカッタ
| || | |  ̄ \_________
http://freeweb2.kakiko.com/tama/
0357bloom
03/04/17 22:56ID:ahUYqmP+0358nobodyさん
03/04/17 22:57ID:???0359あぼーん
03/04/17 23:23ID:???http://www.japan.pinkserver.com/yamazaki/saitama/hankaku06.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku05.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku03.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku04.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku01.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku02.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku09.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku10.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku07.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku08.html
0361nobodyさん
03/04/19 13:00ID:EJZQKwDzに載ってる「ファイルを上書きする場合」(↓)
open(OUT, "+< $datafile"); # 読み書きモードで開く
flock(OUT, 2); # ロック確認。ロック
seek(OUT, 0, 0); # ファイルポインタを先頭にセット
print OUT "$data\n"; # 書き込む
truncate(OUT, tell(OUT)); # ファイルサイズを書き込んだサイズにする
close(OUT); # closeすれば自動でロック解除
を参考にして、
「(1)ファイルの中身(データ)を読み込んで、読み込んだデータを加工して、
(3)再度同じファイルにデータを格納する場合」を考えたんだけど、
↓で特に問題ないでしょうか?
$datafile = "data.txt";
open(OUT, "+< $datafile"); # 読み書きモードで開く
flock(OUT, 2); # ロック確認。ロック
@Array_data = <OUT>; # ★追加:(1)ファイルの中身を読み込んで
foreach $values (@Array_data){
#@Array_dataをいろいろ加工; # ★追加:(2)読み込んだデータを加工
chomp $values;
$values = $values * 2;
push (@New_Array_data,"$values\n");
}
seek(OUT, 0, 0); # ファイルポインタを先頭にセット
print OUT @New_Array_data; # ●変更:(3)再度同じファイルにデータを格納
truncate(OUT, tell(OUT)); # ファイルサイズを書き込んだサイズにする
close(OUT); # closeすれば自動でロック解除
0363nobodyさん
03/04/19 19:05ID:???この最中に逝っちゃっても大丈夫?
0365山崎渉
03/04/20 06:00ID:???( ^^ )< ぬるぽ(^^)
0366:
03/04/21 18:06ID:J93Hac+3http://sagatoku.fc2web.com/
あなたの探し物きっとみつかるよ☆^〜^★
0370nobodyさん
03/04/21 23:33ID:???0371nobodyさん
03/04/21 23:54ID:???イヤなら定期的にバックアップ取る処理を組め。
0372nobodyさん
03/04/22 14:19ID:???0373nobodyさん
03/04/22 20:26ID:???0374nobodyさん
03/04/22 20:41ID:???0375っていうか
03/04/24 13:03ID:???これ定説
0376山崎渉
03/05/22 02:08ID:???0377nobodyさん
03/05/22 07:17ID:???if (opendir(LOCK, "lock")) {
closedir(LOCK);
rmdir("lock");
# 処理
mkdir("lock");
}
0378nobodyさん
03/05/22 09:34ID:sAd9/kNTじゃなくて
mkdir("lock", 600)
でした。
0379nobodyさん
03/05/22 10:08ID:???違う。
if (mkdir ("lock", 755)) {
(処理)
}
こう。
mkdirは、ディレクトリの作成に成功すると真が、
失敗すると偽が返ってくる。
0380nobodyさん
03/05/22 13:35ID:2b2Zl4vP?それだけでいいんでふか?
0381nobodyさん
03/05/22 13:46ID:???そのときにネットで見つけたアダルトDVDショップ以前からオナニー用にDVD
が欲しかったのですぐ注文しました、とても安くてびっくりしましたが次の日には
もう届きました私が買ったのは、オナニー、レズ、レイプです毎日オナニーしてま
す。
http://www.net-de-dvd.com/
0382nobodyさん
03/05/22 13:53ID:???ttp://homepage1.nifty.com/glass/tom_neko/web/web_04.html
このへんでも参考に
0383380 じゃないけど
03/05/22 15:06ID:???激しく参考になりますた。謝謝。
ところで
flock() が使えないところで
eval{ if(!(flock(FH, 2))){ &function; } };
とした場合ちゃんとサブルチンに逝ってくれますか?
false は返ってくるんでしょうか?
0384nobodyさん
03/05/22 15:40ID:Mzhw6+0oサンクスコ(・∀・)
0385nobodyさん
03/05/23 13:24ID:ORCLTuvqアンロックする時にrmdirでディレクトリ削除ってことですよね?
>>382のサイト見てないけど…。
0387山崎渉
03/05/28 17:07ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0388nobodyさん
03/05/28 18:03ID:???0389nobodyさん
03/05/31 21:04ID:n0OtuFEQ他のプロセスでロックしてるファイルにアクセスしてもロックがすぐ終っちゃうような…。
どうすれバインダー。
0390動画直リン
03/05/31 21:10ID:1EAhrEiJ0392389
03/05/31 21:45ID:n0OtuFEQ0393nobodyさん
03/05/31 22:08ID:nC5SP5sDロック中に
sleep 60;
0394nobodyさん
03/05/31 23:30ID:???package FileLock;
use IO::File;
my $CAT= '/bin/cat';
sub open_w {
my $filename= shift;
mkdir($filename)unless -d $filename;
my $base= sprintf("%s.%s.",time,$$);
my $cnt= 0;
$cnt++ while(-f "$filename/$base$cnt");
return IO::File->new("$filename/$base$cnt",'>>');
}
sub open_r {
my $filename= shift;
return IO::File->new("|$CAT $filename/*");
}
1;
0395nobodyさん
03/06/01 04:57ID:Hll/ZLYfおぉ!蟻がとう。
0398nobodyさん
03/06/01 21:54ID:???flockと組み合わせて(かつcron回してファイルをまとめつつ)
使ってたんだけど。。。駄目かぁ(´Д`;)
0399nobodyさん
03/06/02 00:36ID:???> mkdir($filename)unless -d $filename;
意味なし。複数のプロセスでunless -d $filenameが成立する可能性がある。
排他制御するにはアトミックにやらないと駄目。
排他制御に強い/弱いは無い。正しいか駄目のどちらか一方、わずかでも可能性があれば駄目ロック。
0400nobodyさん
03/06/02 09:59ID:7y9vki3n--$retry <= 0
なんてやってるの?
$retry--
じゃまずいの?
0401nobodyさん
03/06/02 10:09ID:Ixodm31chttp://www1.free-city.net/home/s-rf9/page006.html
0402nobodyさん
03/06/02 10:20ID:sw1UrgM5( ´∀`)/< 先生もろDVDはどこですか?
_ / / / \___________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄|| ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.|| || (´Д` ) < http://www.dvd01.hamstar.jp だ!
/ \ \___________
|| ||
|| ||
__ //_ //___
/ // // /
/  ̄  ̄ //
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ||
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ||
|| 教卓 || ||
|| ||
0404nobodyさん
03/06/02 10:35ID:azLkJHuzいやいや、なんで<=を使ってるかが知りたいの?
ifって偽だと実行しないでしょ?
$retryは最終的に0になるわけだから、<=は必要ないだろ。
ってかスレ違いって分かってるので、逝ってきます。
0405nobodyさん
03/06/02 10:39ID:7y9vki3nやっぱり逝くしかないな…。
0406直リン
03/06/02 11:10ID:mGHfwiJV0409nobodyさん
03/06/02 12:07ID:???いや・・・だからさ・・・
全体のソース読んでないんで分からないんだけど。
マイナスになる可能性があるかもしれないんでしょ?
--$retry <= 0
この条件だと、$retryがもし0だったら・・・
-1 <= 0
こんな判定になるし。
0が入る訳がないソースだったとしても、
ちゃんと条件書いてる方が、見た目分かりやすいってのもある。
そして、スレ違いだから、やっぱ逝くべき。
■ このスレッドは過去ログ倉庫に格納されています