[fpc-pascal] fpselect does not work on linux

Michael Van Canneyt michael at freepascal.org
Sat May 9 12:54:22 CEST 2009



On Sat, 9 May 2009, Jonas Maebe wrote:

> 
> On 09 May 2009, at 09:38, Rainer Stratmann wrote:
> 
> >To find out if a nonblocking socket has connected I use the following piece
> >of
> >code:
> >
> >With windows that works, but with linux I get alwas the result that the
> >socket
> >is writable.
> >
> >function is_writable_socket( sck : integer ) : boolean;
> >var
> > fds : tfdset;
> > tv  : timeval;
> >begin
> > {$ifdef linux}   fpfd_zero( fds ); fpfd_set( sck , fds ); {$endif}
> > {$ifdef windows}   fd_zero( fds );   fd_set( sck , fds ); {$endif}
> > tv.tv_sec  := 0;
> > tv.tv_usec := 0;
> > //                 socket+1 , read , write , except , timeout
> > {$ifdef linux}
> > result := fpselect( sck + 1 ,
> 
> Where does the "+ 1" come from?

Man select:
  nfds is the highest-numbered file descriptor in any of the three sets, plus 1.

Michael.



More information about the fpc-pascal mailing list