Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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で制御できます。