i have a client and a server process. the server is run in the background, and waits for the client to write to a pipe (fifo). the problem is that everything that the server reads is null.
maybe the client isn't writing, but i just don't see it.
anyway, here's the code, if anyone can help me please, appreciate it.
server
clientCode:#define BUF 3 //void sint(int s); char *fifo = "ru", rec[BUF+1]; int fd, rnum, max[2], i, tempN; main(){ i = 0; max[0] = 0; //index max[1] = 0; //number setpgid(0, 666); //server will print after interrupt is sent //signal(SIGINT, sint); printf("server: now starting...\n"); //creating fifo if(mkfifo(fifo, 0666) == -1) perror("make fifo failed, it may alredy exist"); else printf("server: fifo successfully created...\n"); //open for reading if((fd = open(fifo, O_RDONLY)) < 0) perror("fifo not opened"); else printf("server: fifo is now open for reading...\n"); while(i < 300){ if(read(fd, rec, BUF+1) == -1) perror("server can't read from fifo"); else //printf("server: reading value...\n"); printf("%4d -> %4d - num = %s\n", i, tempN, rec); tempN = atoi(rec); i++; if(tempN > max[1]){ max[0] = i; max[1] = tempN; } if(tempN > 0) break; } close(fd); exit(0); //TESTING...AND IF NOT SIGNALING!!! printf("======================================================\n"); printf("Largest value found is in position"); printf(" %d, and the value is %d\n", max[0], max[1]); printf("======================================================\n"); }
Code:#define BUF 3 int randnum(void); main(){ int fd, i, rnum; char *fifo = "ru", sent[BUF+1]; setpgid(0, 666); srand((unsigned int) time(0)); printf("client: now starting...\n"); //open fifo if(fd = open(fifo, O_WRONLY | O_NONBLOCK) < 0) perror("client can't open fifo"); else printf("client: fifo is now open for writing...\n"); //send message for(i = 0; i <20; i++){ rnum = randnum(); sprintf(sent, "%d", rnum); if(strlen(sent) > BUF) printf("num too long\n"); if(write(fd, sent, BUF+1) == -1) perror("client can't write value to fifo"); else printf("client: writing value %s...\n", sent); } printf("Client is finished sending the random values.\nExiting...\n"); exit(0); } int randnum(){ return rand() % 101; }



LinkBack URL
About LinkBacks


