我需要能够在不完全停止程序的情况下按下当前角色。理想情况下,我希望程序继续运行,在while循环的每次迭代后检查密钥。 getch()
因此而存在问题。我想在按下'q'键时突破while循环,但是while循环继续运行直到那时。我使用Linux和gcc作为我的编译器。
答案 0 :(得分:7)
在实践中,您应该使用库,这取决于您是在编写终端应用程序还是GUI。
对于终端应用,请阅读TTY demystified页面并使用ncurses或readline 。请注意,在熟模式下(这是默认情况),tty具有内核管理的行缓冲区,因此无法通过getc
获得单个字符。另请参阅termios(3)和tty(4)以及tty_ioctl(4)(您可以通过{{3}在评论中建议的http://shtrom.ssji.net/skb/getc.html中以原始模式设置tty。 } - ,但我建议使用库。)
对于在桌面上运行的图形应用程序,使用某些工具包,例如sjr或GTK 。
BTW,在这两种情况下,编程模型都与初始getc
函数不兼容。
另请阅读Qt并注意Linux有多个多路复用Advanced Linux Programming(这些列在system calls中),特别是syscalls(2) - 这可能是使用的ncurses 或 readline 或 Qt 或 Gtk 库。