javascript - node - process spawn
Inicie otra aplicaciĆ³n de nodo usando node.js? (2)
Tengo dos aplicaciones de nodo separadas. Me gustaría que uno de ellos pueda iniciar el otro en algún punto del código. ¿Cómo voy a hacer esto?
Puede usar el módulo child_process, que le permitirá ejecutar procesos externos.
var childProcess = require(''child_process''),
ls;
ls = childProcess.exec(''ls -l'', function (error, stdout, stderr) { if (error) {
console.log(error.stack);
console.log(''Error code: ''+error.code);
console.log(''Signal received: ''+error.signal); } console.log(''Child Process STDOUT: ''+stdout); console.log(''Child Process STDERR: ''+stderr); });
ls.on(''exit'', function (code) { console.log(''Child process exited with exit code ''+code); });
http://docs.nodejitsu.com/articles/child-processes/how-to-spawn-a-child-process
Use child_process.fork()
. Es similar a spawn()
, pero se usa para crear instancias enteras de V8. Por lo tanto, se usa especialmente para ejecutar nuevas instancias de Node. Si solo está ejecutando un comando, entonces use spawn()
o exec()
.
var fork = require(''child_process'').fork;
var child = fork(''./script'');
Tenga en cuenta que al usar fork()
, de manera predeterminada, las corrientes stdio
están asociadas con el padre. Esto significa que todos los resultados y errores se mostrarán en el proceso principal. Si no desea que las transmisiones se compartan con el padre, puede definir la propiedad stdio
en las opciones:
var child = fork(''./script'', [], {
stdio: ''pipe''
});
Luego puede manejar el proceso por separado de las transmisiones del proceso maestro.
child.stdin.on(''data'', function(data) {
// output from the child process
});
También tenga en cuenta que el proceso no se cierra automáticamente. Debe llamar a process.exit()
desde dentro del proceso del nodo generado para que salga.