kender@eleazar.dartmouth.edu (Too hot to handle) (08/02/89)
I'd like a function (in C for all you fortran holdouts) that would tell me
if there is data on the stream to read, this would be ideal:
if (pending(fd) == 1) { /* there is data to read
... read data ...
} else { /* no data...we can go on */
...
}
this is for SYS V and I'm sans a select...so keep that in mind.
thanx in advance.
-k
********************************************************************************
Cathy Huse: HB 1326, Dartmouth College, Hanover, New Hampshire; 03755
InterNet: kender@eleazar.dartmouth.edu
"What does an actor want with a conscience anyway?" --Jiminy Cricketdavidsen@sungod.crd.ge.com (William Davidsen) (08/03/89)
The name for the procedure which tells you if a key has been pressed
is usually kbhit(), and what you need is fkbhit() I guess. In SysV you
can set the read to timeout with an ioctl. The values to set are in the
control structure. Here's a code fragment (you want to modify it).
ioctl(0, TCGETA, &otermio); /* save old settings */
ntermio.c_iflag = 0; /* setup new settings */
ntermio.c_oflag = 0;
ntermio.c_cflag = otermio.c_cflag;
ntermio.c_lflag = 0;
ntermio.c_line = otermio.c_line;
ntermio.c_cc[VMIN] = 1;
ntermio.c_cc[VTIME] = 0;
ioctl(0, TCSETAW, &ntermio); /* and activate them */
Good luck.
bill davidsen (davidsen@crdos1.crd.GE.COM)
{uunet | philabs}!crdgw1!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me