前に Ruby 1.9 Process.spawn で sh がプロセスにいると書いたけど、 るりま を見てみたら条件が書いてあった。 前の: Ruby 1.9 Process.spawn について るりま: module function Kernel.#spawn 特定文字が含まれているとshell経由で実行されるみたいです。 jpDVBRecではこうやってた。 RECDVBISDB_CMD = "recdvbisdb -a __ADAPTER__ -p __S2API_PROPERTY__ -o __OUTPUT__ -bv" cmd = RECDVBISDB_CMD Process.spawn(cmd) これだと "(ダブルコーテーション) があるのでshell経由みたい。 なのでこのように変更するとshell経由ではなくなる。 Process.spawn("recdvbisdb", "-a", "__ADAPTER__", "-p", "__S2API_PROPERTY__", "-o" , "__OUTPUT__", "-bv") ただこれだとカッコ悪い。 調べてみたらこういう書き方が出来た。 RECDVBISDB_CMD = "recdvbisdb -a __ADAPTER__ -p __S2API_PROPERTY__ -o __OUTPUT__ -bv" cmd = RECDVBISDB_CMD.split(" ") Process.spawn(*cmd) 配列で引数を生成?して *(アスタリスク) と一緒に書くと一括で引数が指定できる。 Rubyすごい。スッキリ。