From: "U.Nakamura" Date: 2008-07-11T05:10:40+09:00 Subject: [ruby-dev:35430] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script こんにちは、なかむら(う)です。 In message "[ruby-dev:35424] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script" on Jul.10,2008 21:18:00, wrote: | 実はこの件はXP以前とVistaとではOSの挙動が異なるという情報があ | り、微妙に処理を変えてあります。 | # win32/win32.c CreateChild()の中でrb_w32_osver()を呼んでいる | # 部分。[ruby-core:17367] | | この辺が原因なのかなあとか思ったりもするわけですが、うーん... 問題箇所がわかったような気がするのでr18015で対応してみました。 # これでVista特別対応部分も不要になった気がするので、後で確認 # して整理します。 [ruby-dev:35421]および[ruby-dev:35423]の例で言うと、本来子プ ロセスに継承して欲しいのはread側のパイプのハンドルだけなのに、 write側のパイプのハンドルも継承されてしまうため、親プロセス側 でwrite側のパイプをcloseしても子プロセス側では依然としてopen 状態のままのために実際のcloseが行われず、結果として子プロセス 側はずっと次の入力または(永久に行われることのない)closeを待ち 続けていた、ということでした。 それでは。 -- U.Nakamura