C プログラムからの入力を受け入れる偽のデバイス ファイルを作成するにはどうすればよいですか?

C プログラムからの入力を受け入れる偽のデバイス ファイルを作成するにはどうすればよいですか?

/dev/input/js0ジョイパッド( )からの入力を受け取り、それを処理して、偽のデバイスファイル(文字)に送信するCプログラムを作成したい。またはキーボードとしてラベル付けされたブロック(ああ、そしてキーボードのデバイス ファイルですか? これが可能かどうか、可能であればその方法を知りたいです。

答え1

ls -al /dev私のシステムのコマンドの抜粋をよく見てください。

brw-rw----  1 root floppy    8,   0 Jun  7 19:55 sda
brw-rw----  1 root floppy    8,   1 Jun  7 19:55 sda1
brw-rw----  1 root floppy    8,   2 Jun  7 19:55 sda2
brw-rw----  1 root floppy    8,   3 Jun  7 19:55 sda3
brw-rw----  1 root floppy    8,   5 Jun  7 19:56 sda5
brw-rw----  1 root floppy    8,   6 Jun  7 19:56 sda6
brw-rw----  1 root floppy    8,   7 Jun  7 19:56 sda7
brw-rw----  1 root floppy    8,   8 Jun  7 19:57 sda8
brw-rw----  1 root floppy    8,  16 Jun  7 19:55 sdb
brw-rw----  1 root floppy    8,  32 Jun  7 19:55 sdc
brw-rw----  1 root floppy    8,  33 Jun  7 19:55 sdc1
brw-rw----  1 root floppy    8,  34 Jun 11 10:39 sdc2
brw-rw----  1 root floppy    8,  35 Jun  7 19:56 sdc3

グループ ID の後、日付の前の 2 つの数字は、デバイス ファイルのメジャー番号とマイナー番号です。これは基本的にデバイスの「種類」です。この場合、8 は SCSI (またはエミュレートされた SCSI) ディスク ドライブです。

http://lxr.linux.no/linux/Documentation/devices.txtメジャー番号とマイナー番号すべてのリストですが、それほど最新ではありません。最新バージョンのリストの公式の場所は不明です。

いずれにせよ、これらのファイルはmknodコマンド ( mknod [OPTION]... NAME TYPE [MAJOR MINOR]、一部のタイプはbブロック用、cは文字用) を使用して作成されます。システム コールもありますmknod()。既存のデバイスと同じメジャー/マイナーで別のファイルを作成した場合の影響は完全にはわかりません。

uinputコメントに記述されているように、おそらくあなたが探しているものでしょう。ただし、PC ハードウェアには、/dev/psauxシステムが古い場合は PS/2 ポートに直接読み書きする があります。USB キーボードについてどこから始めればよいかさえわかりません...

偽のデバイス ファイルだけが必要で、そこに送信したデータがどうなるかは気にしない場合は、 が常に存在します/dev/zero。また、その場合、シンボリック リンクが非常に簡単な解決策になる場合があります。

関連情報