How to kill all child processes on exit?
当node.js进程退出时,如何杀死所有子进程(使用child_process.spawn生成)?
添加到@robertklep的答案:
如果像我一样,当节点被外部杀死时,你想这样做,而不是自己选择,你必须用信号来做一些欺骗。
关键是要监听您可能被杀死的任何信号,并调用
1 2 3 | var cleanExit = function() { process.exit() }; process.on('SIGINT', cleanExit); // catch ctrl-c process.on('SIGTERM', cleanExit); // catch kill |
这样做之后,您就可以正常地听
唯一的问题是
请参阅此问题了解更多信息。
我认为唯一的方法是保持对
一个小例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var spawn = require('child_process').spawn; var children = []; process.on('exit', function() { console.log('killing', children.length, 'child processes'); children.forEach(function(child) { child.kill(); }); }); children.push(spawn('/bin/sleep', [ '10' ])); children.push(spawn('/bin/sleep', [ '10' ])); children.push(spawn('/bin/sleep', [ '10' ])); setTimeout(function() { process.exit(0) }, 3000); |