J'ai utilisé child_process.exec
/child_process.spawn
pour entamer un nouveau processus, puis le tuer en utilisant child.kill
/process.kill
. Il fonctionne très bien avec des exécutables binaires simples, tels que cat
/ls
, et le processus fils vient d'être tué.Processus enfant ne pas être tué avec Node.JS
Cependant, quand aller à les scripts (par exemple P1) que fourches un autre processus de l'enfant (par exemple P2), ne se font tuer l'interprète de script P1, pas le processus enfant P2.
QUESTION: Y at-il moyen de faire en sorte que ce processus P2 soit tué avec Node.JS?
codefonctionne très bien avec run_and_kill('ls -Al /usr/lib')
, mais pas OK avec 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();
}
vous pouvez essayer de les tuer manuellement (probablement P2 ignore SIGHUP) - http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes –
@AndreySidorov Comment tuer manuellement w/o connaître son PID? – Ghostoy
vous le savez - 'ls.pid' (https://github.com/joyent/node/blob/master/lib/child_process.js#L250) –