read with timeout ??

Chuck Robey chuckr at telenix.org
Fri Aug 8 20:31:04 UTC 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Carlos A. M. dos Santos wrote:
> On Fri, Aug 8, 2008 at 5:09 AM, Pieter de Goeje <pieter at degoeje.nl> wrote:
>> On Friday 08 August 2008, Carlos A. M. dos Santos wrote:
>>> On Thu, Aug 7, 2008 at 10:14 PM, Nate Eldredge <neldredge at math.ucsd.edu>
>> wrote:
>>>> On Thu, 7 Aug 2008, Chuck Robey wrote:
>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>> Hash: SHA1
>>>>>
>>>>> I have my head lost in a code problem.  I just hit a point where I need
>>>>> to do a
>>>>> read from an fd, but I need to associate it with a timeout, on the order
>>>>> of 1
>>>>> second, something like that.  I had the feeling that there's a function
>>>>> in FreeBSD's libc that makes that simple, but I forget the function
>>>>> name.  If anyone can remember something like what I'm talking about, I
>>>>> sure would appreciate a function name.  I can figure out how it works,
>>>>> if I could only
>>>>> dredge up that name.
>>>> man 2 select
>>> If the fd is a socket then you can also use setsockopt(2) to set
>>> SO_RCVTIMEO and check for EWOULDBLOCK (same as EAGAIN) upon read(2) or
>>> recv(2) errors. The net effect is the same of using select but the
>>> syntax is simpler, IMO.
>> I think poll(2) is also simpler than select for this purpose.
> 
> BTW, the setsockopt(2) manual page stands that a send or receive
> timeout returns with the error EWOULDBLOCK but read(2) recv(2) send(2)
> and write(2) only list EAGAIN in their ERRORS section. This is
> harmless on BSD and Linux because EAGAIN and EWOULDBLOCK are the same,
> but may sound confusing for people porting from/to System V. On HP-UX,
> for instance, recv(2) lists both EAGAIN and EWOULDBLOCK.
> 
> The setsockopt man page should be improved in order to explain
> standards conformance and porting issues. I volunteer to do it but the
> changes must be reviewed by a native English speaker.
> 

Carlos, lets not go off on the socket trip for me... while I personally enjoy
such a email, I have to admit my own needs fall more into a plain-jame serial
line, nothing a socket-oriented thing could help me with.

However, if you want to discuss this just fo the fun of it, oh please, by all
means do carry on!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkicrPkACgkQz62J6PPcoOmJowCfWPt1jHY4Gx0kOAQedVATHYDd
BGYAoJe6JYuskZZe85AA63sgRBG1VGF0
=dNTn
-----END PGP SIGNATURE-----


More information about the freebsd-hackers mailing list