[#29986] ruby 1.6.4 to be released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#29987] ライセンス論点整理 — Tacos <ozaki@...>
なかだです。
Tacos っす。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
Tacos です。
[#30026] ライセンス/論点整理メモ ver0.91 — Tacos <ozaki@...>
まつもと ゆきひろです
Tacos です。
[#30030] Ruby license discussion — Masayuki Hatta <mhatta@...>
八田と申します。
At Sat, 2 Jun 2001 14:31:02 +0900,
In "akira yamada / やまだあきら <akira@ruby-lang.org>" wrote:
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#30041] Shellwords — "Akinori MUSHA" <knu@...>
自分のプログラムで、 Shellwords::shellwords を使うようにしたら
[#30048] RTtool and RDtool — Takahiro Kambe <taca@...>
こんばんは。
[#30067] [Q]drb で提供されている object のメソッド一覧を得るには ? — eda@...
えだです。
[#30112] Ann: NETRuby (NOTRuby for .NET) pre alpha — arton <arton@...>
artonです。
[#30120] Oracle7 用拡張モジュール +Oracle 7.2(Solaris) — SAITO Shukaku <shukaku@...>
斉藤秀格と申します。Oracle7用拡張モジュールをOracle 7.2に対して利用でき
[#30122] [Q]"2001 年 01 月 02 日 03 時 05 分 " を "2001 年 1 月 2 日 3 時 5 分 " のようにするには ? — eda@...
えだです。
[#30129] ライセンス FACT SHEET ver0.95 — Tacos <ozaki@...>
[#30132] ライセンスQ&A — Tacos <ozaki@...>
[#30141] 数字の 3 桁区切り — Makoto Sato <makotosato@...>
佐藤@NGBです。
[#30155] How do we treat local static variables? — IKEGAMI Daisuke <daisu-ik@...>
ruby-list の皆さんこんにちは。
にし@おかやまです。
NISHI Takao さん wrote :
元質問者のいけがみです。
[#30157] 「訴えられらくない」をまじめに考える。 — Tacos <ozaki@...>
[#30163] FW: [arg1:119] RE: [RubyUnit:4203] Re: インストーラ・プロジェクト — "KANEMITSU Masao" <masao-k@...>
金光です。RAAを改善しませんか?
In message <001701c0f156$5c897e50$6601a8c0@DELL>
artonです。
[#30188] Net::HTTP の new にパラメタを追加したい — matsui@...
Net::HTTPのnewに1つパラメタを追加した派生クラスを作ってみたのですが、
[#30190] 呼び出し元のクラスを知る方法? — "Shin'ya Adzumi" <adzumi@...>
あづみです。
あづみです。
[#30198] Ruby/Xlib の ArgumentError — FUJIMOTO Hisakuni <hisa@...>
藤本です、こんにちは(数年ぶりにメールします)
[#30206] .dup がされてないらしい ? — Atsushi Kanaya <todo-a2c@...>
金谷です。
[#30215] パス文字列を操作するライブラリはありませんか? — "Kaoru Shirai" <shirai@...1jp.com>
こんにちわ。常日頃 Ruby を愛用させて頂いております。
こんにちは kadu です。
From: kadu <kadu@zb.wakwak.com>
こんにちは kadu です。
[#30224] bug?: $= and string hash key — genta@... (IHA, genta)
はじめまして。伊波と申します。
[#30253] 物権/債権( re :ライセンス) — Tacos <ozaki@...>
[#30270] setup.rb — rubikitch@...
るびきちです。
あおきです。すみません、見逃してました。
From: Minero Aoki <aamine@mx.edit.ne.jp>
ただただしです。
高橋征義です。サブジェクト変えました。
[#30281] オブジェクトのプロパティの名前の取得 — "Inoue" <inoue@...>
井上です。
[#30305] TMarshal — rubikitch@...
るびきちです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#30312] composing a mail with a big file attached — "Akinori MUSHA" <knu@...>
ちょっとしたサイズのファイルを添付したメールを作成するコードを
あおきです。
[#30333] 共同著作物の謎( re :ライセンス) — Tacos <ozaki@...>
Tacos.self wrote :
ほんの、ちょっとだけ。
[#30345] PS2Linux への Ruby インストール — "T.Shimomura" <redbugml@...>
T.Shimomura です。
[#30362] 1.6.4 と open3 — "Toshihisa Tsuji" <dayan-ml-ruby-list@...>
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
[#30365] Samba+File.stat+ 奇数秒ファイル — Take_tk <ggb03124@...>
[#30369] メーリングリストの検索 — Takahiro Kambe <taca@...>
おはようございます。
[#30374] rdtool's bug? — Takahiro Kambe <taca@...>
こんにちは。
[#30404] setup.rb: pre_*, post_*, task 'all' — rubikitch@...
るびきちです。
[ruby-list:30424] Re: 1.6.4 と open3
なかだです。
At Fri, 29 Jun 2001 23:42:37 +0900,
matz@ruby-lang.org (Yukihiro Matsumoto) wrote:
> 結局pidを取り出せればよいので、open3の返すIOのpidメソッドを
> 置き換えて、プロセスのpidを返すようにしてやれば良いかなと。
> でも、そうするとwaitを強要することになりますねえ。
>
> 結局、取り出せないままの方が良いのかなって気になってきました。
(1) status を得るためには自動的に wait されてはいけない
(2) ゾンビを残さないためには必ず wait しなければならない
という条件があるわけですが、pid を取り出せるだけだと前者しか満
たしません。finalizer を使っても、今までのように終了したら即座
に取り除かれるのではなくて、無期限にゾンビが残ることはない、と
いうところで妥協が必要ですが。
[ruby-list:30417]はやっぱりダメダメでした。最初の close で
wait してしまうと、場合によって(stdin を読まないプログラムの
stdin を close したときとか)デッドロックしてしまいます。やっぱ
り自動的に wait するなら全部 close したあとでないとまずいようで
す。つまり基本形としては[ruby-list:30388]ということになります。
ただ最後の close で暗黙のうちに wait っていうのはすごく分かりづ
らい気がして来ましたので、
> * pipeに特異メソッドを付加
これと finalizer を使ったパターンのパッチです。今のところこれが
一番マシに思えます。でなければ、
> * 現状のまま(ステータスは無視)
と、ステータスを得られるが wait が必要なものと二つに分けるか。
# ところで 1.6 の open3.rb は動かなくなってますが。
Index: lib/open3.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/open3.rb,v
retrieving revision 1.7
diff -u -2 -p -w -r1.7 open3.rb
--- lib/open3.rb 2001/05/16 09:05:54 1.7
+++ lib/open3.rb 2001/06/30 16:15:53
@@ -17,6 +17,4 @@ module Open3
pid = fork{
# child
- fork{
- # grandchild
pw[1].close
STDIN.reopen(pw[0])
@@ -33,12 +31,11 @@ module Open3
exec(*cmd)
}
- exit!
- }
pw[0].close
pr[1].close
pe[1].close
- Process.waitpid(pid)
+ get_pid = proc {pid}
pi = [pw[1], pr[0], pe[0]]
+ pi.each {|p| class << p; self; end.module_eval {define_method(:pid, get_pid)}}
if defined? yield
begin
@@ -46,9 +43,32 @@ module Open3
ensure
pi.each{|p| p.close unless p.closed?}
+ begin Process.waitpid(pid); rescue Errno::ECHILD; end
end
end
+ Sweeper.new(pi, pid)
pi
end
module_function :popen3
+
+ class Sweeper < Hash
+ def initialize(deps, arg)
+ super()
+ finalizer = method(:finalize).to_proc
+ ObjectSpace.define_finalizer(self, finalizer)
+ deps.each do |obj|
+ self[obj.__id__] = arg
+ ObjectSpace.define_finalizer(obj, finalizer)
+ end
+ end
+
+ private
+
+ def finalize(id)
+ id = delete(id) {return}
+ empty? or return
+ ObjectSpace.undefine_finalizer(self)
+ Process.waitpid(id)
+ end
+ end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦