コマンドラインインターフェイスを使用してアプリケーションを作成しています。F1またはESC、あるいは矢印キーが押されたかどうかをいつでも知りたいです。これを行う最も簡単な方法は何ですか?readlineタイプライブラリの使用は避けたいと思います。
これはLinux固有の質問です。プログラムはマルチスレッドではありません。
コマンドラインインターフェイスを使用してアプリケーションを作成しています。F1またはESC、あるいは矢印キーが押されたかどうかをいつでも知りたいです。これを行う最も簡単な方法は何ですか?readlineタイプライブラリの使用は避けたいと思います。
これはLinux固有の質問です。プログラムはマルチスレッドではありません。
C標準ではこれを行う方法はありませんが、さまざまなオペレーティングシステムでのC実装には、通常、これを行うための拡張機能があります。
Windowsでは、getch()を使用できます。LinuxとUnixでは、次の質問を見てください。
また、これはCFAQリストの「システムの依存関係」セクションの最初の質問です。
Linux用のkbhit()の実装は、Linuxプログラミングの開始ページ167に示されています。提供されているリンクからオンラインで読むことができます。
編集:Linuxに関連する質問が明らかになる前に解決策として投稿されたので、kbhit()について言及します。残念ながら、ソリューションは削除されました。これは残念なことです。原則として、kbhit()がゼロ以外を返す場合、後続のブロック文字指向の読み取り呼び出しはブロックされません。これは、文字指向の入力にのみ当てはまります。getchar()およびstdioを読み取るその他の標準関数は通常、行指向であるため、改行までブロックします。
複数のスレッド?