如何建立一個接受 C 程式輸入的假設備檔案?

如何建立一個接受 C 程式輸入的假設備檔案?

我想創建一個 C 程序,它接受來自遊戲手把 ( /dev/input/js0) 的輸入,對其進行處理,然後將其發送到一個假設備檔案(字符或者塊)標記為鍵盤(哦,還有什麼鍵盤的裝置檔案?我想知道是否可以這樣做,如果可以,如何做。

答案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 之後但日期之前的兩個數字是設備檔案的主編號和次要編號。這基本上就是設備的「類型」。本例中的 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.在這種情況下,符號連結也可能是一個真正簡單的解決方案。

相關內容