[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: kbhit() MSDOS equivalent in Linux



I don't do people's homework for them but...

Well there isn't a direct equivalent because in unix when you have a "terminal" session that generally means you have a "tty" devices as stdin/stdout/stderr. And, this tty device buffers input as well as things like generating signals to your
process when CTRL-C is typed. You can get close though--you can use select() to determine if there's data to be read on stdin (which I'm guessing is what you want to do anyway). Here's a sample C program which demonstrates the technique.

Mario Olimpio de Menezes wrote:

> Hi,
>
>         I received a message from two students about the kbhit() C MSDOS
> function equivalent in Linux. I'm not a good C programmer and could not
> help them. If somebody can, please.
>         Thanks, and sorry for the little off-topic Debian.
>
> []s
> Mario O.de Menezes            "Many are the plans in a man's heart, but
>     IPEN-CNEN/SP                 is the Lord's purpose that prevails"
> http://curiango.ipen.br/~mario                 Prov. 19.21
>
> ---------- Forwarded message ----------
>
> Nome: Edisson Quesada López
> E-mail: equesada@hotmail.com
>
> Cartago, March 21th, 1998.
>
> Urgent help!!!
>
> We are computer science's students of Instituto Tecnológico de Costa Rica and we are working in a project of communication among PC's. Specifically, we need to connect three computers all of them PC's, but one with Linux and others with MSDOS.
>
> Our protocol suport, theorically yet, half duplex and we use the serial and parallel ports.
> Because other caracteristcs, we need something like kbhit function defined  in conio.h of C for MSDOS. This function is like a keypressed and we are looking for something like that because we must emulate the following procedure:
>
>         ...
>          while (1)
>          {
>                 do
>                 {
>                         printf(".");
>                 } while (!kbhit());
>
>                 if (c=getch())
>                 {       printf("\r\nNormal %d\r\n",c);
>                 }
>                 else
>                 {
>                         printf("\r\nExtendido %d\r\n",getch());
>                 }
>                 pausa
>          }
>         ...
>
> Thank you for your help.
>
> Ours names are
>         Evelio Morales A.
>         Edisson Quesada L.
>
> P.S.
> We will work in this proiect until April 10th , of this year, so please send us this information as quick as you can.
>
> Send us your response to any of the following addresses (if is possible, to all of them)
>         equesada@hotmail.com
>         9411063@atlas.cic.itcr.ac.cr
>
> What is the procedure to post messages to the group of Linux (LLP)???

--
Jens B. Jorgensen
jjorgens@bdsinc.com

Attachment: kbhit.c
Description: application/unknown-content-type-c_auto_file


Reply to: