Hi
I'm having a little trouble with the select and fork for the server side program that I'm building. The problem is I got the socket and everything working and the basic problem can receive and display the data out. But whenever I put in the select with the fork, the program does not receive and display the data anymore. Can someone point me into the right direction of the problem that I have with the code?
sd is the listening socket descriptor and sd2 is the accepted socket descriptor.
thank you for all the helpCode:while (1) { result = select(sd, &fds, NULL, NULL, NULL); printf("%d", result); if (result > 0) { printf("entered"); if (FD_ISSET(sd, &fds)) { alen = sizeof(cad); if ( (sd2=accept(sd, (struct sockaddr *)&cad, &alen)) < 0) { fprintf(stderr, "accept failed\n"); exit(1); } //make child process printf("forking now"); pid = fork(); if (pid < 0) { perror("fork"); exit(1); } if (pid == 0) //child process { /* The sd2 has data available to be read */ close(sd); n = recv(sd2, buf, sizeof(buf), 0); printf("received size: %d", n); printf("%d", buf); close(sd2); } else //parent process { printf("This is the parents"); close(sd2); } } } else if (result < 0) { /* An error ocurred, just print it to stdout */ perror("select"); } else if (result == 0){ printf("select is resulting 0"); } }



LinkBack URL
About LinkBacks



