Как сделать статическую структуру с вызовом 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];

но это не сработало, но каждый вызов создавал свою собственную структуру.

0 ответов

Другие вопросы по тегам