Rubyでの外部プロセス起動のメモ
Rubyで外部プロセスを起動するにはいくつか選択肢があって、場合によって使い分けるとよいらしいです。それぞれ、呼び出したプロセスから取得できる情報に違いがあります。
メソッド・モジュール名 | 終了ステータス | 標準出力 | 標準入力 | 標準エラー |
---|---|---|---|---|
バッククオート記法 | ○ ($?) | ○ | × | × |
Kernel.system() |
○ ($?) | × | × | × |
Kernel.exec |
×*1 | × | × | × |
open3 |
× | ○ | ○ | ○ |
[http://raa.ruby-lang.org/project/open4/:title=open4] (非標準) |
○ | ○ | ○ | ○ |
[http://popen4.rubyforge.org/:title=popen4] (非標準) |
○ | ○ | ○ | ○ |
*1:プロセス自体を置き換えるコマンドなので、execの呼び出しは返りません