3

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

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

4

3 回答 3

3

是和不是。

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

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

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

于 2015-05-06T18:42:30.943 回答
2

这取决于。

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

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

于 2015-05-06T18:28:48.757 回答
1

对的,这是可能的。

这就是它的工作原理:

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

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

这里有一个实现,您可以从这里开始

于 2015-05-06T18:33:34.850 回答