[BioRuby-ja] Re: Open3

Tomoaki NISHIYAMA tomoakin @ kenroku.kanazawa-u.ac.jp
2005年 5月 1日 (日) 20:58:48 EDT


こんにちは
西山です。

> プログラムが変というよりは、現在のrubyの仕様がいまいちなのだと思うのですが、
>
>> inn, out, err = Open3.popen3(cmd)
>
> の前に、STDOUT.flushを入れておかないと、STDOUTのバッファに
> 残っていたデータがあると2重に出力されてしまうと思われます。
> 原理的には、STDERRもですが、 STDERRは普通バッファリングしないので大丈夫でしょう。
> これから、この件で、ruby-devの方にメールを書こうと思っています。

どうも、1.8.2になる前、去年の11月に入った修正によって、
STDOUTとSTDERRはforkする直前にflushされるようになったので、
ruby 1.8.2以降では大丈夫なようです。
ruby 1.8.2 preview2 以前だとだめらしいです。
ちょうど、私がruby-1.8.2 のpreview2を使っていたのがいけなかったということで、
1.8.2以降を使う事という注意のもとでは大丈夫な模様です。
先のテストプログラムも、1.8.2では正常な出力になります。
-- 
西山智明
金沢大学学際科学実験センター



BioRuby-ja メーリングリストの案内