[comp.unix.wizards] terminal i/o

mmcp@sdsu.UUCP ( mmcp) (06/13/89)

Hi folks,

	I am running UNIX as HP-UX 6.2 on a 9000 series 300 computer; and I
am trying to do terminal i/o which requires the ability to flush an input 
buffer before I post a read. To do this, I am using the following code
outline:

		#include	<termio.h>

		main()
		{
			...stuff

			fd = open( "/dev/tty", O_RDONLY );

			ioctl( fd, TCFLSH, 0 );		/* flush input buffer */

			c = getc( stdin );		/* stdin and fd both
						  	   control terminal */
			...more stuff
		}

		Is this enough to do what I want? I have also tried doing
this by fdopen()ing a stream off of fd and passing this to fgetc(). I am
sometimes getting this to work, but to unpredicatable results. Part of the
"stuff" code is a signal handler which is waking up every 500000 milliseconds
and incrementing a variable; nothing more. I looked around for ways to flush
stdin, and this was all I could come up with after looking at termio(7).
Remember, I am trying to erase the characters from the input buffer. I don't
want any characters there until I actually post a read.

Any help would be appreciated.

Syd Logan
San Diego State University

vandys@hpcupt1.HP.COM (Andrew Valencia(Seattle)) (06/14/89)

/ hpcupt1:comp.unix.wizards / mmcp@sdsu.UUCP (                mmcp) /  8:48 pm  Jun 12, 1989 /
>			...
>			ioctl( fd, TCFLSH, 0 );		/* flush input buffer */
>			c = getc( stdin );		/* stdin and fd both
>			...more stuff
>
>		Is this enough to do what I want? ...
>Remember, I am trying to erase the characters from the input buffer. I don't
>want any characters there until I actually post a read.

	It's close.  TCFLSH results in all the buffered characters in both
the line discipline and the device driver being thrown away.  There are two
windows of opportunity which are left: some data might be inbound to the
card when you make the request; this data might not be thrown away.  Also,
a character can arrive between the time you do the ioctl() and the time
you post the read.  In your code example, this window appears very small,
but it DOES exist.

				Regards,
				Andy Valencia
				...!hplabs!hpisoa1!vandys

Caveat: My statments result from a two-minute look at the code.  Also,
	they're just my personal attempt at helping you.  None of this
	has anything to do with HP!