该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本来搞个g_iChildProcessNum来记录当前进程数的,但是一直为0啊。。。
if(g_iChildProcessNum
{
iPid= fork();
switch (iPid)
{
case -1:
{
CloseSockfd(iClientSocketFD, __LINE__);
}
break;
case 0:
{
CloseSockfd(iServerSocketFD, __LINE__);
g_iChildProcessNum++;
HandleClient(iClientSocketFD);
g_iChildProcessNum--;
CloseSockfd(iClientSocketFD, __LINE__);
exit(0);
}
break;
default:
{
CloseSockfd(iClientSocketFD, __LINE__);
int sStatus;
pid_t childId = waitpid (-1, &sStatus, WNOHANG);
memset(logbuf,0,sizeof(logbuf));
sprintf(logbuf,"waitpid=[%d],status=[%d],line=[%d]\n",childId,sStatus,__LINE__);
lWriteLog(logfile,logbuf,strlen(logbuf),6);
}
break;
}
}
else
{
CloseSockfd(iClientSocketFD, __LINE__);
memset(logbuf,0,sizeof(logbuf));
sprintf(logbuf,"Too many client connection,g_iChildProcessNum=[%d],g_iMaxChdNum=[%d],line=[%d]\n",g_iChildProcessNum,g_iMaxChdNum,__LINE__);
lWriteLog(logfile,logbuf,strlen(logbuf),6);
}