[#18151] Regexp.last_match — WATANABE Tetsuya <llama@...01.gate01.com>
渡辺哲也です。
[#18186] [req] Marshal — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In article <1031498274.659939.18144.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1032189662.175916.22019.nullmailer@picachu.netlab.jp>,
[#18208] Re: [ruby-list:35875] Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです。
[#18229] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
わたなべです。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
わたなべです。
[#18246] Re: missing/vsnprintf.c: printf("%+f", -0.0) — WATANABE Hirofumi <eban@...>
わたなべです。
At Tue, 10 Sep 2002 12:21:10 +0900,
[#18262] mswin32: EINVAL on Process.kill — Minero Aoki <aamine@...>
あおきです。
[#18274] $0 handling on DOSISH — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
岩月と申します。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[#18285] rubicon on EWS4800 — Koji Arai <JCA02266@...>
新井です。
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
なかだです。
In message <20020921.152641.11483667.JCA02266@nifty.ne.jp>
なかだです。
In article <200209211605.g8LG52p04564@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211628.g8LGSxp04786@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211739.g8LHdKp05495@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209220415.g8M4Fkp24392@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209260105.g8Q15PR08171@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020921.152641.11483667.JCA02266@nifty.ne.jp>,
なかだです。
In article <200209251737.g8PHbdR03024@sharui.nakada.kanuma.tochigi.jp>,
渡辺哲也です。
なかだです。
渡辺哲也です。
渡辺哲也です。
なかだです。
渡辺哲也です。
なかだです。
In article <200210020254.g922srH01700@sharui.nakada.kanuma.tochigi.jp>,
[#18314] class nest in module_eval — Minero Aoki <aamine@...>
あおきです。
[#18361] compile parse.y with -Wall — nobu.nakada@...
なかだです。
なかだです。
[#18371] Re: [ruby-cvs] ruby/lib/uri: * eval.c (ruby_run): should set toplevel visibility again here. — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#18374] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
なかだです。
わたなべです。
いがらしです。少し前の話ですが。
わたなべです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#18391] pstore.rb can make a broken store — YANAGAWA Kazuhisa <kjana@...4lab.to>
# お願いされたから書いてみよう :-)
In article <20020926134339.C8DAE1EE12@milestones.dm4lab.to>,
[ruby-dev:18392] Re: pstore.rb can make a broken store
In article <20020926134339.C8DAE1EE12@milestones.dm4lab.to>,
YANAGAWA Kazuhisa <kjana@dm4lab.to> writes:
> 別のファイルに書いて rename するとか,何かもっと安全な手段をとるべきだ
> と思うのですが,どうでしょうか.
>
> # だいたい後に付けたパッチのような感じでいいのかな? ついでに abort し
> # たとき content を unref してないのも直してます.
lock しつつ rename という話はしばらく前に考えたことがあるんですが、も
うすこし複雑になると思います。
あるファイルを open して LOCK_EX な flock に成功した場合でも、それが即
座にロックを獲得したことにはなりません。これは他のプロセスがそのファイ
ルを rename によってすり替えてから終了した結果としてロックが解放された
からかもしれないからです。この場合、そのファイル名の最新のファイルに対
するロックが獲得できたわけではなく、unlink されてしまった意味のないファ
イルに対するロックが獲得できただけなので、やり直さないといけません。
しばらく前に次のようなのを書いたんですが、こんなかんじで flock した後
に stat して ino を比べ、必要に応じてやり直すような処置が必要ではない
でしょうか。
def open_write(filename)
dirname = File.dirname filename
basename = File.basename filename
tmpname = "#{dirname}/,#{basename},#$$"
1.times {
begin
target = File.open(filename, File::RDWR|File::CREAT)
stat1 = target.stat
target.flock(File::LOCK_EX)
stat2 = File.stat(filename)
redo if stat1.ino != stat2.ino
begin
File.open(tmpname, 'w') {|tmp|
yield tmp
}
stat2 = File.stat(filename)
File.rename(tmpname, filename) if stat1.ino == stat2.ino
ensure
File.unlink tmpname if FileTest.exist? tmpname
end
ensure
target.close
end
}
end
def open_read(filename, &block)
File.open(filename, &block)
end
あと、ついでにいえば "rb" で open したものには LOCK_EX できない OS も
あります。Solaris とか。
さらについでにいえば、flock より fcntl のほうが適切なこともあるようで
す。NFS ごしでも効く場合があるとか。
(手元で試した時には、Solaris と Linux では効いた。)
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)