外部プログラム呼び出し

外部プログラムの標準入出力とやりとりしたい場合

IO.popen(command, 'r+') { |io| io.write("hoge"); io.close_write; io.read }

外部プログラムの標準出力だけ欲しい場合

ret = `command`

外部プログラム間でパイプ処理等をしたい場合

sh.transact { system("command1") | system("command2") > "/tmp/hoge" }

と使い分ければよいのか?