From: "Nobuyoshi.Nakada" Date: 2000-12-08T19:31:51+09:00 Subject: [ruby-list:26456] Re: open3.rb なかだです。 At Thu, 7 Dec 2000 16:37:35 +0900 "Nobuyoshi.Nakada" 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はできる。 中田 伸悦