Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 09 Apr 1996 23:43:53 +0200
From:      Marc van Kempen <marc@bowtie.nl>
To:        questions@freebsd.org
Subject:   select question
Message-ID:  <199604092143.XAA11392@nietzsche.bowtie.nl>

next in thread | raw e-mail | index | archive | help

Hi,

This is not really FreeBSD related, unless it's a FreeBSD bug. But
I wonder under which conditions a select will fail?

I have opened a comport read-write and want to wait for characters
to become available, so I do a:

  tm.tv_sec = 0;
  tm.tv_usec = timeout;         /* timeout to wait for reply */
  FD_ZERO(&readfds);            /* clear the read filedescriptor set */
  FD_SET(_comfd, &readfds);     /* select the _comfd to wait for */
  if (select(1, &readfds, NULL, NULL, &tm)) {
    ...
    ...
  }

However, this piece of code will wait until a timeout occurs, when
I replace the '&tm' with NULL, it will even wait forever.

When I inspect the _comfd with 

ioctl(_comfd, FIONREAD, &ret)

it will show me that a character is available to be read,
in fact when I try to read it with

read(_comfd, &ch, 1)

It will read the character just fine.

Are there any settings of the filedescriptor that will influence
the select behaviour? Or am I overlooking something else?

Regards,
Marc.

----------------------------------------------------
Marc van Kempen                 BowTie Technology     
Email: marc@bowtie.nl            WWW & Databases
tel. +31 40 2 43 20 65         
fax. +31 40 2 44 21 86         http://www.bowtie.nl
----------------------------------------------------





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199604092143.XAA11392>