0

Linux カーネル、特に入力サブシステムについて調査しています。さまざまな入力イベント (主にキーボードとマウス) の /dev/input/eventX デバイスを読み取ることに興味があります。

ただし、read()操作はブロックされます。私が考えることができる唯一のことは、すべてのキーボード キーとマウス ボタンの状態を作成し、キーボードとマウスの状態を読み取るための新しいスレッドを作成し (これらのスレッドは時々ブロックされる可能性があります)、メイン プロセスから、キーボードとマウスの状態にアクセスします。

しかし、私は C++ と Linux でのノンブロッキング プログラミングの経験があまりなく、各デバイスのスレッドはやり過ぎかもしれないと思います。

ブロックしない方法で入力を処理する他の方法があるかどうか、またはスレッドを使用しても問題ないかどうかを知りたいですか?

ありがとう、スクウィー。

4

2 に答える 2

1

ファイルの説明をノンブロッキングに設定できます。select/poll を使用して、データが読み取れるかどうかを確認することもできます。この場合、ノンブロッキングは必要ありません。このスレッドを参照してください。

記述子を読み取るためのノンブロッキング呼び出し

于 2013-08-30T20:28:33.030 に答える
1

これについては、poll システム コールを確認できます。複数のファイル記述子で I/O を処理するためのものです。1 つの可能性は、複数のファイル記述子のイベントをポーリングするスレッドを 1 つだけ生成することです。

ここにいくつかの読み物があります:http://www.makelinux.net/ldd3/chp-6-sect-3

于 2013-08-30T20:11:20.093 に答える