C - 直接从键盘缓冲区读取

bra*_*n56 4 c keyboard buffer input

这是C编程语言中的一个问题.

如何直接读取键盘缓冲区中的数据?

我想直接访问数据并将其存储在变量中.变量应该是什么数据类型?

我需要它用于我们研究所正在开发的操作系统.它被称为ICS-OS,我不太确定具体细节.它运行在x86,32位机器上(我们在Linux机箱中的QEMU上运行).以下是Google Code http://code.google.com/p/ics-os/的链接.我希望这些信息足够充分.

操作系统不支持conio.h库,因此kbhit不是一个选项.

Sum*_*uma 9

这实际上取决于平台.

如果这是针对Windows的,则最直接访问"键盘缓冲区"的方法是使用WM_INPUT和GetRawInputData.有关键盘和鼠标的信息,请参阅使用原始输入示例.

另一种DOS/Windows特定方式是conio.h函数getch()/ kbhit().

可移植库称为Curses,具有Linux和Windows的端口.

但是,由于您的目标是非常特定的操作系统,因此需要检查该操作系统的文档.

最直接的平台独立方式是getchar/scanf /从stdin读取的任何东西,但是stdin是行缓冲的,因此在按下enter之前你将得不到任何数据.您可以更改缓冲设置,但同样,这取决于平台,在某些平台上可能无法实现.请参阅setbuf(stdin,NULL)的相关讨论.