#include #include #include #include #define chan1 "fifo/0" #define chan2 "fifo/1" #define PERM 0666 char nick[20][50]; int disc[50],num=1; int main(int argc, char **argv) { int fdr,fdw,n; char buff[640]; char *r; char *w,*buf; int b; if ((fdw=open(chan1,1))<0) { printf("parent: can't open write fifo: %s",chan1); } if ((fdr=open(chan2,0))<0) { printf("parant: can't open read fifo: %s", chan2); } write(fdw,"=== Connected to FIFOServer established ===",44); printf("%s\n","FIFOServer ---> [STARTED]"); while (1) { buff[0]=0; read(fdr,buff,640); printf("%s\n",buff); //Создание канала с клиентом if (buff!=0) { b=atoi(buff)*2; buf[0]='0'+b; buf[1]='\0'; r="fifo/"; r[0]=r[0]+buf[0]; printf("%s\n","-=DONE=-"); b=atoi(buff)*2; buf[0]='0'+b; buf[1]='\0'; w="fifo/"; w[0]=w[0]+buf[0]; printf("%s\n","-=DONE=-"); buf=w; w="fifo/"; strcat(w,buf); printf("%s\n","-=DONE=-"); if ((mknod(r, S_IFIFO | PERM, 0)<0)&&(errno!=EEXIST)) printf("Can't create fifo 1: %s", chan1); if ((mknod(w, S_IFIFO | PERM, 0)<0)&&(errno!=EEXIST)) { unlink (chan1); printf("Can't create fifo 2: %s", chan2); } printf("%s\n","-=Создание каналов завершено=-"); if ((disc[num*2]=open(chan1,num*2+1))<0) printf("parent: can't open read fifo: %s", chan1); if ((disc[num*2+1]=open(chan2,num*2+1))<0) printf("parent: can't open read fifo: %s",chan2); } printf("%s\n","-=Открытие каналов завершено=-"); buff[0]=0; read(disc[num*2],buff,640); } printf("%s",buff); return(0); }