是否可以从node.js中执行外部程序?是否有类似于Python的os.system()
的等效方法或任何可以添加此功能的库?
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr) {
// result
});
exec在缓冲区大小上有512k的内存限制。在这种情况下,最好使用spawn。使用spawn可以在运行时访问执行命令的stdout。
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
从未到来...... - hippietrail最简单的方法是:
const { exec } = require("child_process")
exec('yourApp').unref()
unref是必要的,以便无需等待"yourApp"即可结束您的进程。
这里是exec文档。
来自Node.js文档:
通过ChildProcess类,Node提供了一个三向popen(3)功能。
import { exec } from 'child_process';
import utils from 'util';
const execute = utils.promisify(exec);
console.log(await execute('pwd'));
child_process
模組。 請查看文檔,其中提供了幾個明確的不同用例範例。 - kqnr