Hi,
What's worng here. My select() call always return 0. Here my parent is the server and child is the client. My select() call is in the server process.
Code:while (1) { printf("----------Inside select()\n"); sel = select(sockfd, &read_fd, NULL, NULL, &timeout); FD_SET(sockfd, &read_fd); if (sel > 0) { if (FD_ISSET(sockfd, &read_fd)) { clilen = sizeof(clientAdd); if ( (newsockfd = accept(sockfd, (struct sockaddr *)&clientAdd, &clilen) < 0)){ printf("ERROR SERVER: Accept() failed\n"); exit(1); } //make child process printf("forking now\n"); pid = fork(); if (pid < 0) { perror("fork"); exit(1); } if (pid == 0) { //child process printf("this is the child\n"); // The sockfd has data to be read close(sockfd); n = read(newsockfd, buffer, 255); printf("received size: %d\n", n); printf("%s\n", buffer); close(newsockfd); } else { //parent process printf("This is the parents\n"); close(newsockfd); } } else { printf("FD_ISSET() did not set\n"); } }else if (sel < 0) { /* An error ocurred, just print it to stdout */ perror("select"); } else if (sel == 0) { printf("select is returnig 0\n\n"); break; } }



LinkBack URL
About LinkBacks


