On Fri, 18 Jun 2004, Lev Pliner wrote: > Dear forum members! > > I'm writing a multithreaded rpc program. The following is a part of my > program that causes a error: > > fd_set readfds; > int size = getdtablesize ( ); > > while ( 1 ) > { > readfds = svc_fdset;
Where is svc_fdset coming from? Are you quoting the whole example? AFAIK, you should first "FD_ZERO(&readfds)", and then "FD_SET(some_fd, &readfds)", otherwise you're trying to select() on a random set of fd's. > switch ( select ( size, &readfds, NULL, NULL, NULL ) ) > { > case -1: > if ( errno == EINTR ) > continue; > else ... > break; > case 0: > continue; > break; > }; > }; > > "select" call here causes the following error: "Bad file descriptor". This > example was taken from "Power programming with RPC" by John Bloomer. Again, try making sure "readfds" is properly initialized. > I tried to understand what svc_fdset consits of: > sizeof ( svc_fdset ) == 2 This doesn't look right. See below. > Thus fd_set.fd_bits array has two elements: > sprintf ( "%ld %ld\n", svc_fdset.fds_bits [ 0 ], svc_fdset.fds_bits [ 1 ] ) > == "8 0" > > But somehow: > for (i=0;i<64;i++) FD_SET (i, svc_fdset) == 1 What's so strange about this? fd_set is a *bitmask*, consisting of 2 4-byte (32-bit) quanitities, for a total of 64 bits. > Could anyone tell me how to solve this problem? > Lev. fd_set is an 8-byte structure. I'm not sure why "sizeof(svc_fdset)" returns 2 bytes, but it's probably worth investigating. In any case, if you think you've found a problem, please provide a complete testcase, not the uncompilable snippet above. Also, please review and follow the Cygwin problem reporting guidelines at <http://cygwin.com/problems.html>, in particular the part about *attaching* the output of "cygcheck -svr". Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "I have since come to realize that being between your mentor and his route to the bathroom is a major career booster." -- Patrick Naughton -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/