non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

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つながり

9年前の記事

8年前の記事