que utiliza child_process.exec
/child_process.spawn
que desembolsar un nuevo proceso y luego matarlo usando child.kill
/process.kill
. Funciona bien con los ejecutables binarios simples, como cat
/ls
, y el proceso hijo acaba de ser asesinado.no proceso de perder la vida del niño con Node.JS
Sin embargo, cuando llega a las secuencias de comandos (por ejemplo P1) que tenedores otro proceso hijo (por ejemplo P2), sólo el guión intérprete P1 maten, no el proceso P2 niño.
PREGUNTA: ¿hay alguna forma de que se procese este proceso infantil P2 con Node.JS?
Código funciona bien con run_and_kill('ls -Al /usr/lib')
, pero no bien con run_and_kill('firefox')
:
function run_and_kill(cmd) {
var exec = require('child_process').exec,
ls = exec(cmd);
console.log('Child process started: %d', ls.pid);
ls.on('exit', function(code, signal) {
console.log('exit with code %s and signal %s', code, signal);
});
ls.kill();
}
se puede tratar de matarlos de forma manual (probablemente P2 ignora SIGHUP) - http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes –
@AndreySidorov Cómo matar manualmente w/o sabiendo su PID? – Ghostoy
lo sabes - 'ls.pid' (https://github.com/joyent/node/blob/master/lib/child_process.js#L250) –