我正在生成一个子进程:
child = spawn("childprocess", [], {
detached: true
}
我正在通过以下方式观看“退出”事件:
child.on('exit', (code, signal) => {
// Do stuff
}
我的应用退出时,我正在使用taskkill
杀死孩子(因为这是在Windows上运行的):
exec(`taskkill /PID ${child.pid} /F /T`, (error, stdout, stderr) => {
// Do stuff
}
问题是,当进程被终止时,退出事件将触发(可以理解),但是我不希望这样做。有什么方法可以删除事件监听器?还是在不触发事件的情况下终止进程?我已经尝试过child.removeListener('exit')
,但是没有用(也许是因为它是一个匿名函数?)。
答案 0 :(得分:0)
我已经尝试过
child.removeListener('exit')
,但是没有用(也许是因为它是一个匿名函数?)。
该函数是否具有名称无关紧要。您只需要将相同的函数对象传递给removeListener
(或off
):
var handler = (code, signal) => {};
child.on('exit', handler);
child.off('exit', handler);