获取当前按下C键?

我需要能够在不停止程序的情况下按下当前字符。 理想情况下,我希望程序继续运行,在每次迭代循环后检查密钥。 getch()出于这个原因是有问题的。 我想在按下'q'键的时候跳出一个while循环,但是while循环继续运行。 我用gcc作为我的编译器。

在实践中,你应该使用一个库 ,这取决于你正在编写一个终端应用程序或一个GUI。

对于终端应用程序 ,阅读TTY揭秘页面并使用ncurses或readline 。 请注意,在烹饪模式下(默认情况下), tty具有内核管理的行缓冲区,因此通过getc获取单个字符是不可能的。 另请参阅termios(3)和tty(4)和tty_ioctl(4) (您可以在原始模式下将tty设置为tty,例如http://shtrom.ssji.net/skb/getc.html中建议的由sjr评论 – ,但我建议使用库)。

对于在桌面上运行的图形应用程序使用像GTK或Qt这样的工具包

顺便说一句,在这两种情况下,编程模型不再兼容朴素的getc函数。

另请参阅高级Linux编程 ,注意Linux有几个多路复用系统调用 (这些在syscalls(2)中列出),特别是轮询(2) – 可能由ncursesreadlineQtGtk库使用。