From: Akinori MUSHA Date: 2002-11-18T16:02:35+09:00 Subject: [ruby-list:36514] Re: IOクラスのオブジェクトがGCされる際の挙動について At Mon, 18 Nov 2002 13:47:07 +0900, matz wrote: > on 02/11/18, きた writes: > > |のように,GC で回収させると pipe は close されますが,子プロセスは > |wait されないようです.  私も最近「実行中にゾンビがたくさんできる」の指摘で気づき、 IO::popen() / open("| ...") で開いたものは明示的に close() する ように直したところでした。 > おっしゃる通り、プロセスのwaitは行っていません。というのはた > だでさえ「遅い遅い」と文句が出ているGC の最中にwaitでブロッ > クしてしまうのは避けたいからです。より望ましい実装の提案はい > つもお待ちしています。  IO クラスで未回収 pid のリストを管理するしかないでしょうか。 各インスタンスの finalizer でそれらについて WNOHANG で waitpid してやればよさそう。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "When I leave I don't know what I'm hoping to find When I leave I don't know what I'm leaving behind.."