Как выполнить внешнюю программу из Node.js? - PullRequest
128 голосов
/ 25 апреля 2011

Возможно ли выполнить внешнюю программу из node.js? Есть ли эквивалент Python os.system() или какая-либо библиотека, которая добавляет эту функциональность?

Ответы [ 4 ]

128 голосов
/ 25 апреля 2011
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});
70 голосов
/ 19 апреля 2013

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);
});
15 голосов
/ 08 февраля 2014

Самый простой способ:

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

unref необходимо завершить процесс, не дожидаясь «yourApp»

Вот exec документы

4 голосов
/ 25 апреля 2011

Из документации Node.js:

Узел предоставляет трехстороннюю функцию popen (3) через класс ChildProcess.

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

...