是否可以从node.js中执行外部程序?是否有与Python的os.system()或任何添加此功能的库等效的库?
os.system()
dy1byipe1#
var exec = require('child_process').exec; exec('pwd', function callback(error, stdout, stderr) { // result });
ljo96ir52#
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); });
dgtucam13#
最简单的方法是:
const { exec } = require("child_process") exec('yourApp').unref()
unref是结束您的进程而不等待“yourApp”所必需的
这是执行文件
tv6aics14#
Node.js文档:Node通过ChildProcess类提供了一个三向popen(3)工具。参见http://nodejs.org/docs/v0.4.6/api/child_processes.html
xam8gpfp5#
使用import语句和utils promisify:
import { exec } from 'child_process'; import utils from 'util'; const execute = utils.promisify(exec); console.log(await execute('pwd'));
5条答案
按热度按时间dy1byipe1#
ljo96ir52#
exec具有512k的缓冲区大小的存储器限制。在这种情况下,最好使用spawn。使用spawn,可以在运行时访问已执行命令的stdout
dgtucam13#
最简单的方法是:
unref是结束您的进程而不等待“yourApp”所必需的
这是执行文件
tv6aics14#
Node.js文档:
Node通过ChildProcess类提供了一个三向popen(3)工具。
参见http://nodejs.org/docs/v0.4.6/api/child_processes.html
xam8gpfp5#
使用import语句和utils promisify: