2011-04-25 47 views

Respuesta

56

Desea utilizar el módulo child_process. Consulte the documentation, que proporciona varios ejemplos claros de varios casos de uso.

+1

Probablemente debería proporcionar el código de muestra con la respuesta en lugar de decirle a alguien que lea los documentos. – jww

105
var exec = require('child_process').exec; 
exec('pwd', function callback(error, stdout, stderr){ 
    // result 
}); 
+1

Cuál es la mejor manera de actuar en función del resultado del proceso secundario. Ejemplo ... si el proceso devuelve un código de salida 0, y quiero llamar a un método diferente, me parece que tengo una gran cantidad de errores. – continuousqa

+0

@continuousqa - Esta respuesta tiene 4 años. Si tiene problemas, publique una nueva pregunta sobre SO y consulte esta si es necesario. –

+1

Este [artículo] (https://medium.com/@graeme_boy/how-to-optimize-cpu-intensive-work-in-node-js-cdc09099ed41#.se7f974h7) tiene buenos consejos sobre el uso de 'child_process'. –

53

ejecutivo tiene limitación de memoria del tamaño del búfer de 512k. En este caso, es mejor usar spawn. Con un engendro tiene acceso a la salida estándar del comando ejecutado en tiempo de ejecución

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

Tomé este código y no muestra la salida del proceso generado http://stackoverflow.com/questions/21302350/node-js-cant-get-output-of-spawned- proceso –

+0

@PaulVerest: Su salida puede haber estado en 'stderr' en lugar de' stdout'. En mi caso, aunque el 'cierre' nunca llegue ... – hippietrail

11

La forma más sencilla es:

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

unref es necesario poner fin a su proceso sin esperar a que "yourapp"

Aquí están los ejecutivos docs

+0

Creo que esto solo funciona para engendrar – googamanga

Cuestiones relacionadas