Node.jsでパイプを使う外部コマンドを実行するには
おはようございます。再び、今週は奥さんが入院のため、息子達と実家で過ごしている@kjunichiです。
child_process.execではなく、child_process.spawnを使う
以下のようにすることで、パイプを使うコマンドの実行が出来た。execでは、うまく動かない。
var spawn = require('child_process').spawn; var cmd = "top -l1|grep usage|cut -d' ' -f3|tr -d '%'|tr -d '\n'"; //console.log("cmd = "+cmd); function shspawn(command) { return spawn('sh', ['-c', command]); } var child = shspawn(cmd); var buf=""; child.stdout.on('data',function(data){ buf=buf+data; }); child.stderr.on('data',function (data){ console.log('exec error: '+data); }); child.on('close',function(code) { // コマンド実行後の処理 // codeでコマンドの実行の成否が確認できる。 // この時点でbufに正常時はコマンドの出力結果が入っている。 }); }
まとめ
node.jsだと大抵の事は簡単にできるのですが、今回のようにパイプを使うコマンドの実行は 標準モジュールのみだと、意外と記述量が多かったです。
関連記事
node.jsつながり
- MavericksでNodObjCを試すには
- Node.jsでデバッガを使う際に必要なたった2つのこと
- [soloved]Mavericksでnode-webclがビルドできた
- Node.jsでコマンドラインアプリを書く JSONファイル編
- node.jsでHTTPプロキシ経由でhttpsアクセスするには
- Safariのリーディングリストをkindleに送る
- Herokuではnode.jsで作ったHttp Proxyが動かせなかった
- UbuntuやRaspberry PiでCloud9のソースを動かすには
- cloud9 IDEのコンパイルが出来なくなった場合の対処
- iPhone4Sの疑似テザリングツールをGitHubに上げた
- node.jsでhttpsも使えるHttp proxyを書いている
- node.jsで顔検出してみた
- node.jsが80番ポートで動かない #windows