Mail Archives: cygwin/2004/06/18/09:33:31
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/
|\ _,,,---,,_ pechtcha AT cs DOT nyu DOT edu
ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com
|,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/
- Raw text -