/* To wait for one of two file descriptors to be ready for reading: */ #include #include #include #include #include #include #include #include #include #include #include int main() { int fd0, fd1, maxfd, result; fd_set readfds; struct timeval tv; char buffer[2]; tv.tv_sec = 1; // 1.5 seconds tv.tv_usec = 500000; FD_ZERO(&readfds); FD_SET(fd0,&readfds); FD_SET(fd1,&readfds); if (fd0>fd1) maxfd = fd0+1; else maxfd = fd1+1; result = select(maxfd,&readfds,NULL,NULL,&tv); if (result == 0) printf("timed out\n"); if (result < 0) printf("error\n"); if (result > 0) { printf("%d fd's are now ready for reading\n",result); if FD_ISSET(fd0,&readfds) read(fd0,buffer,1); if FD_ISSET(fd1,&readfds) read(fd1,buffer+1,1); } exit(0); }