ちょっとした背景として、私は Linux Mint (32 ビット) で生データ ストリームを使用しています。これは、データ ストリーム ファイルから 24 ビットの塊を読み取る私のライブラリruby-buzzからのものです。
Linux Mint、32ビットでラップトップを再インストールしたところ、突然エラーが表示されましErrno::EINVAL: Invalid argument @ io_freadた.
ajfaraday@squishy ~ $ sudo chmod 777 /dev/input/by-id/*
ajfaraday@squishy ~ $ irb
2.2.1 :001 > path = '/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00'
=> "/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00"
2.2.1 :002 > f = File.open(path)
=> #<File:/dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00>
2.2.1 :003 > f.read(24)
Errno::EINVAL: Invalid argument @ io_fread - /dev/input/by-id/usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00
from (irb):3:in `read'
from (irb):3
from /home/ajfaraday/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
2.2.1 :004 > f.read(32)
=> "\xAB>xW\x0E\xDC\x00\x00\x01\x00\xC0\x02\x01\x00\x00\x00\xAB>xW\x0E\xDC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
同じシステムで、同じ入力デバイスを使用すると、/dev/input ファイルが作成されましたが、データ ストリームが含まれていませんでした。
tail -f以前は端末から生データ ストリームを監視するのに問題なく使用できた理由とfile.read(24)、ルビーからその 24 ビット チャンクを取得するために使用できた理由がわかりません。Mintのインストールを含む。でも今はどちらもできません。