Answers:
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);
});
stderr
而不是中stdout
。就我而言,虽然close
永远不会到来...
从Node.js文档中:
节点通过ChildProcess类提供了双向的popen(3)功能。
child_process
模块。请参阅文档,其中提供了各种用例的几个清晰示例。