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

Is it possible to program your own kbhit() in C?

我在我的大学学习了 class 编程,并且我正在研究一些程序。我想知道是否可以编写我自己的 kbhit() 函数。如果可以的话,kbhit() 是如何编码的。

目的是我需要知道我使用的函数是如何工作的。

视情况而定。

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

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

是的,有可能。

这就是它的工作原理:

It returns a non-zero integer if a key is in the keyboard buffer. It will not wait for a key to be pressed.

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

有一个实现here,您可以从中着手。

是也不是。

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

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

但同样,您可以从 C 语言轻松调用它们。