我需要能够在不完全停止程序的情况下按下当前角色.理想情况下,我希望程序继续运行,在while循环的每次迭代后检查密钥.getch()由于这个原因是有问题的.我想在按下'q'键时突破while循环,但是while循环继续运行直到那时.我使用Linux和gcc作为我的编译器.
在实践中,您应该使用库,这取决于您是在编写终端应用程序还是GUI.
对于终端应用程序,请阅读TTY揭秘页面并使用ncurses或readline.请注意,在熟模式(这是默认情况下)中,tty具有内核管理的行缓冲区,因此getc无法获得单个字符.另请参见termios(3)和tty(4)以及tty_ioctl(4)(您可以在原始模式中设置tty的痛苦 - 例如http://shtrom.ssji.net/skb/getc.html中的建议sjr的评论- ,但我建议使用库).
对于在桌面上运行的图形应用程序,请使用GTK或Qt等工具包.
顺便说一句,在这两种情况下,编程模型都不再与天真getc功能兼容.
另请阅读高级Linux编程,并注意Linux有多个多路复用系统调用(这些在syscalls(2)中列出),特别是poll(2) - 可能由ncurses或readline或Qt或Gtk库使用.