关于进程动态池的问题。我需要保留免费进程的信息。如果空闲进程数少于N
,我应该创建新进程。但是,我知道free
变量在每个过程中都是相同的。如何使free
变量“全局”并在子进程中更改会更改父进程中的变量,然后父进程可以检查这一点并制作更多子进程?诸如共享内存和其他 IPC 之类的东西。对他们有点困惑。
free=5;
for (i=0;i<5;i++) // create 5 pre-forks
{
pid=fork();
if (pid==0) //child
{
break;
}
else//parent
{
}
}
while (1)
{
if (pid==0) // child
{
newsock = accept(listensock, NULL,NULL);
free--; //children is busy
send(newsock, buffer, nread, 0);
close(newsock);
free++;
}
else if (pid>0) // parent
{
if ...// if less than n fork() more
}
}