web-dev-qa-db-ja.com

Node.js内から外部プログラムを実行する方法は?

Node.js内から外部プログラムを実行することは可能ですか? Pythonのos.system()またはこの機能を追加するライブラリに相当するものはありますか?

130
Michael Bylstra
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});
130
Mark Kahn

execには、512kのバッファサイズのメモリ制限があります。この場合、spawnを使用することをお勧めします。 spawnを使用すると、実行時に実行されたコマンドの標準出力にアクセスできます。

var spawn = require('child_process').spawn;
var prc = spawn('Java',  ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);

//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
    var str = data.toString()
    var lines = str.split(/(\r?\n)/g);
    console.log(lines.join(""));
});

prc.on('close', function (code) {
    console.log('process exit code ' + code);
});
70
MKK

最も簡単な方法は次のとおりです。

const {exec} = require("child_process")
exec('yourApp').unref()

unrefは、「yourApp」を待たずにプロセスを終了するために必要です。

Exec docs です

15
zag2art

Node.jsドキュメントから:

Nodeは、ChildProcessクラスを通じて3方向のpopen(3)機能を提供します。

http://nodejs.org/docs/v0.4.6/api/child_processes.html を参照してください

4
Michelle Tilley