使用命令行界面编写应用程序,我想知道是否按下了F1或ESC或箭头键。这样做最简单的方法是什么?我想避免使用readline类型库。
这是一个特定于Linux的问题;该程序不是多线程的。
答案 0 :(得分:5)
在C标准中无法做到这一点,但各种操作系统上的C实现通常都有一些扩展来实现这一点。
在Windows上,您可以使用getch()。在Linux和Unix上,看看这个问题:
此外,这是C FAQ列表中“系统依赖关系”部分中的第一个问题:
答案 1 :(得分:2)
Linux的kbhit()实现在Beginning Linux Programming第167页中介绍。您可以在提供的链接上在线阅读。
编辑:我提到kbhit()因为它是在解决了与Linux相关的问题之前作为解决方案发布的。不幸的是,该解决方案已被删除,这是不幸的。原理是当kbhit()返回非零时,后续阻塞面向字符的读取调用将不会阻塞。这仅适用于面向字符的输入; getchar()和其他读取stdio的标准函数通常是面向行的,因此阻塞直到换行。答案 2 :(得分:1)
多线程?