获取C中当前按下的键?
发布时间:2020-12-16 09:57:15 所属栏目:百科 来源:网络整理
导读:我需要能够在不完全停止程序的情况下按下当前角色.理想情况下,我希望程序继续运行,在while循环的每次迭代后检查密钥.由于这个原因,getch()是有问题的.我想在按下’q’键时突破while循环,但是while循环继续运行直到那时.我使用 Linux和gcc作为我的编译器. 解
我需要能够在不完全停止程序的情况下按下当前角色.理想情况下,我希望程序继续运行,在while循环的每次迭代后检查密钥.由于这个原因,getch()是有问题的.我想在按下’q’键时突破while循环,但是while循环继续运行直到那时.我使用
Linux和gcc作为我的编译器.
解决方法
在实践中,您应该使用库,这取决于您是在编写终端应用程序还是GUI.
对于终端应用程序,请阅读TTY demystified页面并使用ncurses或readline.请注意,在熟模式(默认情况下)中,tty具有内核管理的行缓冲区,因此无法通过getc获取单个字符.另请参阅termios(3)和tty(4)以及tty_ioctl(4)(您可以在sjr评论中建议的原始模式-e.g中设置tty,如http://shtrom.ssji.net/skb/getc.html所示,但我建议使用库). 对于在桌面上运行的图形应用程序,请使用某些工具包,如GTK或Qt. 顺便说一下,在这两种情况下,编程模型都不再与天真的getc函数兼容. 另请阅读Advanced Linux Programming并注意Linux有多个多路复用system calls(这些在syscalls(2)中列出),特别是poll(2) – 可能由ncurses或readline或Qt或Gtk库使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |