父进程用于接收子进程退出状态并重启子进程

进程监控模型
void daemonlize()
{
//1.创建子进程
int ipid = fork();
if(ipid < 0)
{
exit(-1);
}else if(ipid > 0)
{
//2.父进程退出
exit(0);
}
//3.子进程 设置会话ID
setsid();
//4.子进程 设置指向路径
//5.子进程 重定向3个文件描述符到/dev/null
int nullfd = open("/dev/null",O_RDWR);
if(nullfd >= 0)
{
dup2(nullfd,0);
dup2(nullfd,1);
dup2(nullfd,2);
close(nullfd);
}
// 进程监控
while(1)
{
int pid = fork();
if(0 > pid)
{
exit(0);
}
/*父进程等子进程退出*/
if(0<pid)
{
int iStatus = 0;
wait(&iStatus);
if(0 == iStatus)
{
exit(0);
}
}
/*子进程跳出循环执行游戏业务*/
else{
break;
}
}
}
}