Ruby:子プロセスの標準入力に出力

標準入力からユーザーが入力したコマンドを受け付けるスクリプトを、
別のスクリプトが実行・コマンド入力するスクリプトを作ってみた。

簡単に言えば、既存のスクリプトを自動実行するスクリプトである。

仕事で別の人が作ったスクリプトを、ほぼ毎日利用する。
そのスクリプトは、いくつかの機能が実装されており、
コマンドを入力して、起動する機能を選択する。

しかし、利用するのは特定の機能だけだが、毎回スクリプトを実行して
コマンドを入力する手間が面倒ので、1つのスクリプトを実行する操作だけで
完結するようにした。

○コード

IO.popen( "ruby test.rb" , "r+" ){ |cmd_io|

  cmd_io.puts( "user_command" )

  cmd_io.each{ |line|
    puts line
  }

}

○解説
IOクラスのpopen関数を呼び出して、子プロセスを起動してコマンドを実行。
ブロックの引数に子プロセスの標準入出力が設定されるので
入力するコマンドをputs関数で入力していく。

その後、each構文を使って子プロセスの出力内容を1行ずつ読み取って
親プロセスの標準出力に出力していく。