From: "きむらこういち" Date: 2007-05-26T04:28:46+09:00 Subject: [ruby-list:43566] Re: IO.popenと入出力 木村です。 07/05/25 に MATSUNAGA Ichiro さんは書きました: > IO.popenで子processを起動し、子processの標準入力にデータを送った場合標準出 > 力よりデータを受け取れないという状況に悩ませれています。 > リファレンスのcatして標準入力に情報を流し込み、標準出力から受け取るのは出 > 来るのですが、それをちょっとイジった場合に読み取りのgetsするところで刺さっ > てしまいます。 > ためしに出力だけさせた場合には、問題無くgetsで取れています。 > なにかヒントをお願いします。 grepが入力をまだ待っていて、出力に何も出していないのでは? > IO.popen("echo \"foo\"", "r"){|io| > foo = io.gets() > puts foo # これは問題無く取れる。 > } > > IO.popen("grep -n \"bar\" -", "r+"){|io| > io.puts("foo\nbar") io.close_write > foo = io.gets() > puts foo # ここで刺さっているよう(C-Cで止めた時のstack traceよ > り。 > また、標準エラー出力はどうやって取得するので しょうか? open3で。 cygwinだから大丈夫? http://www2.ruby-lang.org/ja/man/?cmd=view;name=open3 -- 木村浩一 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or shoud I? mail kbk at kt.rim.or.jp web www.kt.rim.or.jp/~kbk/zakkicho/index.html