From: wanabe Date: 2008-07-10T19:41:34+09:00 Subject: [ruby-dev:35421] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script ワナベです。 2008/07/10 18:59 Tanaka Akira : > spawn する前にパイプに書き込むと、パイプから読み出すプロセス > がない状態で書き込むことになりますので、パイプがいっぱいになっ > てしまったときにハングするようになるのではないかと思います。 > > 従って、この変更には賛成できないのですが、この変更はどうして > 必要なのでしょう? > > blocking in win32 とありますが、なぜ、win32 ではブロックする > のでしょう? すみません、問題になる場合があることを全く想定しておらずコミットしてしまいました。 手元で make test-all をしたときに、assert_normal_exit で必ずブロックするので 調べてみたところ、Mingw では以下のようなコードでブロックしました。 i, o = IO.pipe a=spawn("./ruby", STDIN=>i) o.print "p 1" o.close p Process.wait a # <= サブプロセスが終了しない これを回避するために前述の変更をしたのですが、問題になるようですので リバートします。大変失礼しました。 -- ワナベ