>>295
294は Ruby の話だろ(system に start ... で渡せばいいってこと?)。

Win の Ruby は使ったことないからわからないが、 fork してその中で exec
するのが普通じゃないの?

以下 Unix の話だが。

system はシェルなり何なりを起動して実行する。終了まで待つ。``も同様だ
が出力結果が文字列で帰ってくる。
一方、execはちょっと違って、自分自身がそのコマンドに変身する。だから終
了するとプログラム自体が終了する。
そこで fork を使って子プロセスをつくり、子プロセスの方で exec するのが普通。

例はこんな感じ。
pid = fork { exec(cmd) }

fork が呼ばれると子プロセスはブロック内を実行するので、cmdが実行される
(cmdが終了したら子プロセスが終了する)。一方、親プロセスの方はブロック
を実行せずに pid に子プロセスのidが確保される。これは何に使うかという
と、親プロセスの方で子プロセスの終了を待ちたいときに使われる
(Process.wait のあたりを参照)。