Ruby 1.9 Process.spawn について その2
前に Ruby 1.9 Process.spawn で sh がプロセスにいると書いたけど、 るりま を見てみたら条件が書いてあった。
特定文字が含まれていると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すごい。スッキリ。
コメント
コメントを投稿