1

使用命令行界面编写应用程序,我想随时知道是否按下了 F1 或 ESC 或箭头键。最简单的方法是什么?我想避免使用 readline 类型库。

这是一个 Linux 特定的问题;该程序不是多线程的。

4

3 回答 3

5

在 C 标准中没有办法做到这一点,但各种操作系统上的 C 实现通常有一些扩展来做到这一点。

在 Windows 上,您可以使用 getch()。在 Linux 和 Unix 上,看这个问题:

非阻塞 getch()、ncurses

此外,这是 C FAQ 列表中“系统依赖项”部分的第一个问题:

19.1

于 2009-10-03T09:45:33.880 回答
2

Linux 的 kbhit() 的实现在开始 Linux 编程第 167 页中介绍。您可以在提供的链接上在线阅读它。

编辑:我提到 kbhit() 是因为在明确该问题与 Linux 相关之前,它已作为解决方案发布。不幸的是,解决方案已被删除,这是不幸的。原理是当 kbhit() 返回非零时,后续阻塞的面向字符的读取调用不会阻塞。这仅适用于面向字符的输入;getchar() 和其他读取 stdio 的标准函数通常是面向行的,因此阻塞直到换行。

于 2009-10-03T10:14:05.013 回答
1

多线程?

于 2009-10-03T09:57:51.713 回答