如何从Node.js中执行外部程序?

时间:2011-04-25 04:11:08

标签: node.js command exec

是否可以从node.js中执行外部程序?是否有相当于Python的os.system()或任何添加此功能的库?

4 个答案:

答案 0 :(得分:124)

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

答案 1 :(得分:68)

exec的缓冲区大小为512k的内存限制。在这种情况下,最好使用spawn。 使用spawn可以在运行时访问stdout执行的命令

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);
});

答案 2 :(得分:15)

最简单的方法是:

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

unref 是必要的,无需等待“yourApp”即可结束您的流程

以下是exec docs

答案 3 :(得分:3)

来自Node.js文档:

  

Node通过ChildProcess类提供了一个三向popen(3)工具。

请参阅http://nodejs.org/docs/v0.4.6/api/child_processes.html