获取C中当前按下的键?

时间:2015-03-31 06:02:43

标签: c linux

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

1 个答案:

答案 0 :(得分:7)

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

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

对于在桌面上运行的图形应用程序使用某些工具包,例如sjrGTK

BTW,在这两种情况下,编程模型都与初始getc函数不兼容。

另请阅读Qt并注意Linux有多个多路复用Advanced Linux Programming(这些列在system calls中),特别是syscalls(2) - 这可能是使用的ncurses readline Qt Gtk 库。