[ruby-list:49607] Re: IO.popen に不具合?

From: dezawa <dezawa@...>
Date: 2013-09-26 20:11:49 UTC
List: ruby-list #49607
出沢です

Windowsのことはよく分からない、と書いたのは
Thread.fork まわりのことなのです。

1.IO.popen 使うのに、(Windowsでは)Thread.fork が必要なのだろうか?

2.(Windowsでは)
      Thread.fork {
        pipe.write self
        pipe.close_write
      }
      pipe.read
  と書いたときに、メインスレッドはスレッドが終わるまで待つのだろうか
  joinしなくても。

あたりかな。
Threadするのは大抵の場合は並行して仕事をさせるときだと思うので、
偽パイプラインを作るのなら要らないのでは、と思ったのです。
  あるとむしろ危険?
 
Open3.pipeline_rw を使うのなら、String#|を定義しなくても
  i,o,e=Open3.pipeline_rw("myprog1 datafile.txt","myprog2","myprog3")
  i.close
  result = o.read

でよいと思われるのに,ここでも Thread を使われているので、
Windowsではpipeを使うときにはThreadが必要なのだろうか?
という疑問です

あ、Open3 とのちがいはもしかすると
Open3は内部でThread立てているので、Threadの管理がされている
から、それが影響しているのかもしれませんね。

In This Thread