我用child_process.exec
/ child_process.spawn
到一个新的进程,然后用杀死它child.kill
/ process.kill
.它可以很好地处理简单的二进制可执行文件,例如cat
/ ls
,并且子进程就会被杀死.
然而,当到达脚本(比如P1)是叉另一个子进程(比如P2) ,仅脚本解释P1被打死,而不是子进程P2.
问题:有没有办法让Node.JS杀死这样的子进程P2?
代码工作正常run_and_kill('ls -Al /usr/lib')
,但不适用于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();
}
Run Code Online (Sandbox Code Playgroud)