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

发布于 2024-11-03 13:58:21 字数 67 浏览 4 评论 0原文

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

Is it possible to execute an external program from within node.js? Is there an equivalent to Python's os.system() or any library that adds this functionality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瑕疵 2024-11-10 13:58:22
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr) {
  // result
});
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr) {
  // result
});
栖竹 2024-11-10 13:58:22

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

exec has memory limitation of buffer size of 512k. In this case it is better to use spawn.
With spawn one has access to stdout of executed command at run time

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);
});
薯片软お妹 2024-11-10 13:58:22

最简单的方法是:

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

unref 是结束进程而不等待“yourApp”所必需的。

这里是 exec 文档

The simplest way is:

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

unref is necessary to end your process without waiting for "yourApp"

Here are the exec docs

机场等船 2024-11-10 13:58:22

来自 Node.js 文档:

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

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

From the Node.js documentation:

Node provides a tri-directional popen(3) facility through the ChildProcess class.

See http://nodejs.org/docs/v0.4.6/api/child_processes.html

醉殇 2024-11-10 13:58:22

将 import 语句与 utils promisify 一起使用:

import { exec } from 'child_process';
import utils from 'util';

const execute = utils.promisify(exec);
console.log(await execute('pwd'));

Using import statements with utils promisify:

import { exec } from 'child_process';
import utils from 'util';

const execute = utils.promisify(exec);
console.log(await execute('pwd'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文