2012-09-03 34 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)。 –

相關問題