なかだです。

At Thu, 7 Dec 2000 16:37:35 +0900
"Nobuyoshi.Nakada" <nobu.nakada / nifty.ne.jp> wrote:
>   結構前の話ですが、別解を思いついたので…。IO::popen で作った IO って必
> ず waitpid() しますよね、たしか。

  えと、試してみたらエラーになったので(^^;、io を dup するようにしてみた
ところ、cygwin だと SEGV してしまいました。すわバグか〜と思ったら Linux 
だと問題なく動くようです。ひょっとして cygwin1.dll のバグ?


module Open3 def popen3(*cmd) re, we = IO.pipe unless io = IO.popen('-', 'w+') re.close STDERR.reopen(we) we.close exec(*cmd) end we.close pi = [io, io.dup, re] defined? yield or return pi begin yield(*pi) ensure pi.each {|p| p.close unless p.closed?} end end module_function :popen3 end
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦