获取C中当前按下的键?

Gra*_*orð 3 c linux

我需要能够在不完全停止程序的情况下按下当前角色.理想情况下,我希望程序继续运行,在while循环的每次迭代后检查密钥.getch()由于这个原因是有问题的.我想在按下'q'键时突破while循环,但是while循环继续运行直到那时.我使用Linux和gcc作为我的编译器.

Bas*_*tch 7

在实践中,您应该使用库,这取决于您是在编写终端应用程序还是GUI.

对于终端应用程序,请阅读TTY揭秘页面并使用ncursesreadline.请注意,在熟模式(这是默认情况下)中,tty具有内核管理的行缓冲区,因此getc无法获得单个字符.另请参见termios(3)tty(4)以及tty_ioctl(4)(您可以在原始模式中设置tty的痛苦 - 例如http://shtrom.ssji.net/skb/getc.html中的建议sjr的评论- ,但我建议使用库).

对于在桌面上运行的图形应用程序,请使用GTKQt等工具包.

顺便说一句,在这两种情况下,编程模型都不再与天真getc功能兼容.

另请阅读高级Linux编程,并注意Linux有多个多路复用系统调用(这些在syscalls(2)中列出),特别是poll(2) - 可能由ncursesreadlineQtGtk库使用.