/* Control commnads */ void controlThread(void){ if((contaccsock = accept(contsock,(struct sockaddr *)&contcaddr,&len)) < 0){ perror("Error in accept contaccsock.\n"); exit(1); } close(contsock); while(1){ recv(contaccsock,recvbuf,1024,MSG_WAITALL); controllCommand(recvbuf[0]); bzero(recvbuf,1024); bzero(sendbuf,1024); } close(contaccsock); } /* Disk Used */ void diskThread(void){ unsigned char diskbuf[8]; while(1){ recvfrom(disksock,diskbuf,8,0,(struct sockaddr *)&caddr,&listlen); memcpy((char *)&dynamic_data.fulldisk,diskbuf,4); memcpy((char *)&dynamic_data.useddisk,diskbuf+4,4); } } /* List Data */ void listThread(void){ /* List Data Socket */ while(1){ recvfrom(listsock,dynamic_data.listdata,datasize,0,(struct sockaddr *)&caddr,&listlen); multisend((char *)&dynamic_data.listdata); } } . . . int main(int argc,char *argv[]){ pthread_t controlthread,diskthread,listthread; . . . /* Create Thread */ pthread_create(&controlthread,NULL,(void *)&controlThread,NULL); pthread_create(&diskthread,NULL,(void *)&diskThread,NULL); pthread_create(&listthread,NULL,(void *)&listThread,NULL); . . . }