rob*_*lep 26
我认为唯一的方法是保持对ChildProcess
返回的对象的引用spawn
,并在退出主进程时将其终止.
一个小例子:
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);
Run Code Online (Sandbox Code Playgroud)
DuB*_*sch 25
要添加到@ robertklep的答案:
如果像我一样,当Node被外部杀死而不是自己选择时,你想要这样做,你必须对信号做一些诡计.
关键是要听,你可以与被杀死的任何信号(S),并调用process.exit()
默认情况下不会散发,否则节点exit
上process
!
var cleanExit = function() { process.exit() };
process.on('SIGINT', cleanExit); // catch ctrl-c
process.on('SIGTERM', cleanExit); // catch kill
Run Code Online (Sandbox Code Playgroud)
这样做后,就可以只听exit
对process
正常.
唯一的问题是SIGKILL
无法捕获,但这是设计的.无论如何你应该kill
使用SIGTERM
(默认).
有关更多信息,请参阅此问
归档时间: |
|
查看次数: |
19408 次 |
最近记录: |