142 votes

Est-il possible d'exécuter un programme externe de l'intérieur node.js?

Est-il possible d'exécuter un programme externe de l'intérieur node.js? Est-il un équivalent en Python de l'os.system() ou toute bibliothèque qui ajoute cette fonctionnalité?

143voto

zyklus Points 31683
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});

81voto

Misha Kobrin Points 354

exec a une limitation de la mémoire de la taille de la mémoire tampon de 512 ko. Dans ce cas, il est préférable d'utiliser de spawn. Avec frayer un a accès sur la sortie standard de la commande en cours d'exécution 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);
});

40voto

Ken Rockot Points 2630

Vous souhaitez utiliser l' child_process module. Voir la documentation, qui fournit plusieurs exemples de différents cas d'utilisation.

20voto

zag2art Points 147

Façon la plus simple est:

require("child_process").exec('youApp').unref();

"unref" est nécessaire à la fin de votre processus sans attendre "youApp"

4voto

Brandon Tilley Points 49142

À partir de la Node.js documentation:

Nœud fournit un tri-directionnel popen(3) installations à travers le ChildProcess classe.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X