From: wanabe Date: 2008-07-10T21:01:36+09:00 Subject: [ruby-dev:35423] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script ワナベです。 2008/07/10 20:07 U.Nakamura : >> 手元で 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 # <= サブプロセスが終了しない > > 割とやばそうな話なのでもうちょっと細かいことを知りたいんです > が、OSはなんでしょうか? XP の SP2 です。cygwin 上で gcc -mno-cygwin でコンパイルしています。 なお MSYS 上でも同様でした。また、関係あるかどうか分かりませんが i, o = IO.pipe a=spawn("./ruby -e '2.times { p STDIN.getc}'", STDIN=>i) o.print "1" o.close p Process.wait a このようにすると、"1" を出力した後 2回目の getc でブロックしました。 (念のため cygwin で同じスクリプトを走らせると、こちらは "1" の次に nil を出力して正常に終了しました) -- ワナベ