Как сделать статическую структуру с вызовом fork()
У меня проблема со структурой
Это краткое из кода:
struct registration{
long port; // port number
char host_name[MAXSIZE]; // host name of the client
};
struct registration regDB[MAXUSER]; //
void handelClient(struct packet *pkt){
int k;
for(k=0;k<MAXUSER;k++){
printf("\nIndex:%i H:%s P:%ld",k,regDB[k].host_name,regDB[k].port);
}
}// handelC...
int main( int argc , char *argv[]){
int pid;
while(1){
if((clientSock=accept(serverSock,(struct sockaddr *)&clientInfo,&sockLength))==-1){
perror("\nError Accept: ");
}// if
pid=fork();
if(pid<0){
perror("\nError Fork");
}
if(pid==0){
handleClient(clientSock);
}
}// while
return 0;
}//main
проблема в том, что каждый вызов handleClient() создает новую структуру regDB
struct registration regDB[MAXUSER]
Итак, когда я печатаю содержимое regDB в каждом вызове handleClient() отличается. Я хочу сделать regDB статическим во всей программе, я пытался сделать это:
static struct registration regDB[MAXUSER];
но это не сработало, но каждый вызов создавал свою собственную структуру.