2012-09-03 33 views
2

我需要检测控制台应用程序中的按键,而不会提示用户。基本上,我的应用程序通常是一个监听特殊输入设备的守护进程,但我需要在交互模式下使用键盘在开发箱上进行仿真。我怎样才能做到这一点? - 我在Linux系统上。检测控制台应用程序中的按键?

+0

你知道 - linux,键盘输入,curses –

+0

可能重复[在C中捕获在GNU/Linux中的击键](http://stackoverflow.com/questions/1485116/capturing-keystrokes-in-gnu-linux -in-c) –

回答

2

如果您在等待输入时无法阻止,则可以使用例如select检查STDIN_FILENO文件描述符是否准备好读取,如果是,则可以使用正常输入功能(scanf,fgets 等)。

+0

这实际上工作吗?在我的测试中(使用选择手册页中的示例),选择不报告stdin准备好读取,直到看到一个CR。 –

+0

@JoeStrout您可能必须使用['tcsetattr'](http://pubs.opengroup.org/onlinepubs/009695399/functions/tcsetattr.html)更新终端标志。 –

+0

是的,至少我的测试机器上似乎是这种情况(一个OS X,一个Ubuntu)。 –

相关问题