On Jun 23 13:52, Corinna Vinschen wrote: > On Jun 23 11:36, Steven Bardwell wrote: > > > > > > > > Here is a "program" that shows the issue I am worried about. It is so > > > > simple > > > that I must be overlooking something really obvious: > > > > > > > > #include <stdio.h> > > > > #undef FD_SETSIZE > > > > #define FD_SETSIZE 256 > > > > #include <sys/types.h> > > > > #include <sys/select.h> > > > > > > > > main() > > > > { > > > > fd_set rfds; > > > > fprintf(stdout, "FD_SETSIZE=%d\n", FD_SETSIZE); > > > > fprintf(stdout, "sizeof(fd_set)=%d\n", sizeof(fd_set)); > > > > } > > > > > > > > Steve Bardwell > > > > > > > > > > > > > > I don't know if this is still the case, but when I looked into this years > > > ago I > > > found that it was not possible to change the size of the fd set in linux, > > > it's > > > fixed at 1024 (generally), unless you rebuild the kernel. > > > > > > Secondly, in the windows api, their version of an fd_set is more like a > > > poll() > > > implementation, you can fake out any size you want since the size of the > > > array is the first entry. > > > > > > I can't speak for the cygwin implementations, but if they offer poll() or, > > > better, epoll(), use those. > > > > > > -lee > > > > For what it's worth, this 'program' works as expected in SUA. The size > > of the fd_set changes depending on the value of FD_SETSIZE. > > In my case it prints 'sizeof(fd_set)=8', which is correct. For > historical reasons and an ill-advised compatibility with old cruft, > fd_set is an array of bit per descriptor. 8 * 8 = 256.
Now that's embarassing. I guess I shgould go to primary school again. Hang on, I 'll have a nother look while I'nm trying to get the red out of my face... Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
signature.asc
Description: PGP signature