【发布时间】:2011-08-12 02:49:17
【问题描述】:
是否可以从 node.js 中执行外部程序?是否有相当于 Python 的 os.system() 或任何添加此功能的库?
【问题讨论】:
-
您想使用
child_process模块。请参阅the documentation,它提供了各种用例的几个清晰示例。
是否可以从 node.js 中执行外部程序?是否有相当于 Python 的 os.system() 或任何添加此功能的库?
【问题讨论】:
child_process 模块。请参阅the documentation,它提供了各种用例的几个清晰示例。
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr) {
// result
});
【讨论】:
child_process的技巧。
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);
});
【讨论】:
stderr 而不是 stdout。就我而言,虽然close 永远不会到来......
最简单的方法是:
const { exec } = require("child_process")
exec('yourApp').unref()
unref 是在不等待“yourApp”的情况下结束进程所必需的
这里是执行docs
【讨论】:
来自 Node.js 文档:
Node 通过 ChildProcess 类提供了一个三向的 popen(3) 工具。
【讨论】: