Ist es möglich, ein externes Programm aus node.js heraus auszuführen? Gibt es eine Entsprechung zu Pythons os.system()
oder einer Bibliothek, die diese Funktionalität hinzufügt?
Ist es möglich, ein externes Programm aus node.js heraus auszuführen? Gibt es eine Entsprechung zu Pythons os.system()
oder einer Bibliothek, die diese Funktionalität hinzufügt?
Antworten:
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
exec hat eine Speicherbeschränkung der Puffergröße von 512 KB. In diesem Fall ist es besser, Spawn zu verwenden. Mit Spawn hat man zur Laufzeit Zugriff auf stdout des ausgeführten Befehls
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
eher in als stdout
. In meinem Fall kommt das close
aber nie ...
Aus der Node.js-Dokumentation:
Der Knoten bietet über die ChildProcess-Klasse eine dreidirektionale Popen (3) -Funktion.
Siehe http://nodejs.org/docs/v0.4.6/api/child_processes.html
child_process
Modul verwenden. In der Dokumentation finden Sie einige klare Beispiele für verschiedene Anwendungsfälle.