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すごい。スッキリ。


コメント

このブログの人気の投稿

2019年4月 やってるお金の投資

Rails Devise認証のカスタマイズメモ

One Netbook One Mix 2S + IPEGA PG-9083でニンテンドースイッチもどき