From: MATSUNAGA Ichiro Date: 2007-05-25T23:51:14+09:00 Subject: [ruby-list:43565] IO.popenと入出力 松永です。 IO.popenで子processを起動し、子processの標準入力にデータを送った場合標準出 力よりデータを受け取れないという状況に悩ませれています。 リファレンスのcatして標準入力に情報を流し込み、標準出力から受け取るのは出 来るのですが、それをちょっとイジった場合に読み取りのgetsするところで刺さっ てしまいます。 ためしに出力だけさせた場合には、問題無くgetsで取れています。 なにかヒントをお願いします。また、標準エラー出力はどうやって取得するので しょうか? 以下、こっちで動作を見るのに使ってたcodeを付けます。 環境は下記の通りです。 WindowsXP SP2 cygwin 1.5.24 ruby 1.8.5(cygwin) -<ここから>------------------------------ IO.popen("echo \"foo\"", "r"){|io| foo = io.gets() puts foo # これは問題無く取れる。 } IO.popen("grep -n \"bar\" -", "r+"){|io| io.puts("foo\nbar") foo = io.gets() puts foo # ここで刺さっているよう(C-Cで止めた時のstack traceよ り。 } -<ここまで>------------------------------ 以上、よろしくお願いします。 -- MATSUNAGA Ichiro e-mail: vikke@mars95.to Just remember - when you think all is lost, the future remains. -- Robert H. Goddard