是否可以在C中编写自己的kbhit()?

时间:2015-05-06 13:36:59

标签: c function kbhit

我在我的大学上学了一门课程,我正在研究一些课程。我想知道是否可以编写自己的kbhit()函数。如果可以查看,kbhit()是如何编码的。

目的是我需要知道我使用的功能是如何工作的。

3 个答案:

答案 0 :(得分:2)

取决于。

在windows stdio(标准io,如stdin / stdout)总是阻塞,因此你需要使用os特定的系统调用来避免像read这样的阻塞调用。

在Linux上,您可以使用fcntl将stdio更改为非阻塞,从而避免需要专门的函数调用。

答案 1 :(得分:2)

是和否。

C语言没有输入和输出的概念。它依赖于标准库(基本上用C语言编写),而后者依赖于系统调用。

标准库,以及类Unix系统和Windows常见的系统调用集都不处理非阻塞系统调用,因此您必须调用系统特定的调用。

但是,你可以用C语言轻松地调用它们。

答案 2 :(得分:0)

是的,这是可能的。

这就是它的工作原理:

  

如果键位于键盘缓冲区中,则返回非零整数。它不会等待按下键。

基本上你从 stdin 检查(假设是C语言键盘的默认输入数据)。

有一个实现here,您可以从中开始。