Thanks to the following for their responses.
Dejan Muhamedagic <muja_at_galeb.etf.bg.ac.yu>
Lars Bro, lab_at_dscc.dk
"Jeffrey G. Micono 6533 (Ktech)" <jgmicon_at_sandia.gov>
Here is my original question:
> Hello. This question is more of a programming question so it may not
> be appropriate for this list. If that's true, I apologize ahead of
> time. Anyway, I'm having trouble doing a select() on a COM port. I
> open /dev/tty00 with Read/Write permissions then do a select on it, but
> it never comes back. I know the port is working okay because if I skip
> the select and just read or write the fd it works fine. Does anyone
> out there know if it is possible to do a select() on an RS232 connection?
> And if so, is there anything special you have to do that I might be
> missing?
The response from Jeffrey G. Micono seems to have summed up the answer.
> Mike,
>
> I kinda remember stumbling on this on an Ultrix box. Basically,
> I was trying to select from both a socket descrip and a terminal
> descrip.
>
> On Ultrix, this doesn't work. select did not work for character
> special devices or files.
>
> Fortunately, you have other options in DU. If you are willing to
> make your app multi-threaded, you can use regular old blocking
> reads in separate threads for each fd. This gets rid of having
> to use select and makes each thread very simple. The down side
> is that you now have reentrancy and thread safety to be aware of
> (and some possibly pretty hairy debugging sessions)
>
> If you must use one thread and select, you may have to write
> a "shim" process that reads from the com port (using blocking
> reads) and writes to a unix domain socket (or a socket on the
> loopback ethernet). Then, your main program can select on the
> unix domain socket and other sockets.
>
Since I am trying to do precisely what Jeffrey spoke of (doing a
select on both a socket and a terminal descrip) I think I am having
the same problem. I will probably use a thread to do a blocking read
on the on the com port and then write whatever it gets to a socket
where my main process will be hanging a select. Shouldn't be too
tough.
Oh, I almost forgot, I also downloaded the C-Kermit source code to see
if it uses select. From what I could tell it didn't use select the
way I need it on a com port, only on a socket.
Thanks,
again
----------------------------------------------------------------------
Michael Galuza
DeJarnette Research Systems mgaluza_at_dejarnette.com
401 Washington Ave Suite 700 Voice: +1(410)583-0680 x691
Towson, MD 21204 Fax: +1(410)583-0696
----------------------------------------------------------------------
Received on Fri Mar 21 1997 - 15:17:14 NZST