如何使用fork()创建静态结构

时间:2016-02-09 17:17:39

标签: c struct fork

我遇到了struct

的问题

这是代码中的简要说明:

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]

因此,当我在 handleClient()的每次调用中打印 regDB 的包含时,会有所不同。 我想在整个程序中使 regDB 静态 我试着这样做:

static struct registration regDB[MAXUSER];

但是,它不起作用,仍然每次调用创建它自己的结构。

0 个答案:

没有答案