Est-il possible d'exécuter un programme externe à partir de node.js? Existe-t-il un équivalent de Python os.system()
ou de toute bibliothèque qui ajoute cette fonctionnalité?
Est-il possible d'exécuter un programme externe à partir de node.js? Existe-t-il un équivalent de Python os.system()
ou de toute bibliothèque qui ajoute cette fonctionnalité?
Réponses:
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
exec a une limitation de mémoire de la taille de la mémoire tampon de 512k. Dans ce cas, il est préférable d'utiliser spawn. Avec un spawn a accès à stdout de commande exécutée au moment de l'exécution
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
plutôt que stdout
. Dans mon cas, mais le close
ne vient jamais ...
À partir de la documentation Node.js:
Node fournit une fonction popen (3) tri-directionnelle via la classe ChildProcess.
child_process
module. Consultez la documentation , qui fournit plusieurs exemples clairs de divers cas d'utilisation.