Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

IO.popenでCLIツールを楽々操作

IO.popenでCLIツールを楽々操作できます。
わざわざパイプで繋がなくとも、対象を引数として与えればサブプロセスとしてやってくれます。

サンプル:gnuplot

ソースコード popen_gnuplot.rb

#popen_gnuplot.rb
require "gnuplot"                                                                                                                                 
                                                                                                                                                  
IO.popen("gnuplot","r+") do |io|
                                                                                                            
  io.puts <<EOS                                                                                                                                   
set terminal png                                                                                                                                  
set output   "gnuplot.png"                                                                                                                        
plot sin(x)                                                                                                                                       
EOS
                                                                                                                                   
end 

結果

$ ruby popen_gnuplot.rb
$ open gnuplot.png

とやれば
f:id:shuzo_kino:20131230230050p:plain
という結果を得ます。

まとめ

上の例ではgnuplotを使いましたが、R言語でもお手製シミュレータでも同様にIO.popenで制御できます。