//以下代码用于维持进程,当子进程退出时,5秒后自动重新开启进程。
if(process.argv.length>1) {//这个if肯定会成立,其作用是为了把内部的变量的作用范围和外部分离开来,避免冲突
var newArgv = [];//
var ifChild = false;
process.argv.forEach(function (val, index, array) {
if(val=='run_in_child') {
ifChild = true;
}
else if(index>0)newArgv.push(val);//第0个元素是命令/程序路径
});
if(!ifChild) {
newArgv.push('run_in_child');//子进程需要一个命令标志:run_in_child
start();
function start()
{
//console.dir(newArgv);
console.log('master process is running.');
var cp = require('child_process').spawn(process.argv[0], newArgv);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
cp.on('exit', function (code)
{
//可以在此添加进程意外退出的处理逻辑
delete(cp);
console.log('child process exited with code ' + code);
setTimeout(start,5000);//5秒钟以后重启进程
});
}
return;
}
}
//维持进程代码结束
原文地址: http://yoyo.play175.com上一篇: NodeJS Mailer 发送邮件举例 2012-03-04 21:49
下一篇: nodejs实现反向代理远程桌面-外网连接局域网内机器实现远程 2012-02-22 22:03
Since 2007 www.txdnet.cn. 京ICP备09017503号.