From: Yoshiki Wada Date: 2004-04-30T19:55:09+09:00 Subject: [ruby-dev:23462] Re: open("|...").each > > 次のコードで、ブロックを抜けた後でも > > openで実行したlsのプロセスが残ります。 > > > > open("|ls").each do |line| > > p line > > end > > openが返した IO オブジェクトが回収されていないので wait が起こら > ずにゾンビ化しているのでしょうか。 > そういう使い方はopen にブロックを渡したり, > open("|ls") do |f| > f.each do |line| > p line > end > end > IO.foreach 等を使います。 > IO.foreach("|ls") do |line| > p line > end なるほど。こうすれば問題なくなりました。ありがとうございます。 もともとの使い方では、openを何度も呼び出していたので 知らないうちにプロセスを山ほど起動したまま になってしまって、びっくりしてしまいました。