我想从主进程中优雅地退出一个子进程,其中主代码和子代码位于不同的 .js 文件中。
大师.js
cluster.setupMaster({
exec : 'child.js',
args : [],
silent : false
});
cluster.fork({'some': 'info'});
process.on('SIGINT', function() {
console.log('\nshutting down services ...');
function eachWorker(callback) {
for (var id in cluster.workers) {
callback(cluster.workers[id]);
}
}
eachWorker(function(worker) {
worker.kill();
});
process.exit(0);
})
child.js
cluster.worker.on('disconnect', function() {
console.log(cluster.worker.id + ' shutting down.');
})
我尝试了各种信号,cluster.worker.on('exit')、process.on('exit')、process.on('disconnect') 等,但似乎没有一个被触发。有任何想法吗?
worker.send() 在执行期间有效,但不在 SIGINT 函数内?