我正在尝试从ruby中的输入设备读取事件。
然而
File.open('/dev/input/event9').read 16
返回异常:
Errno::EINVAL: Invalid argument @ io_fread - /dev/input/event9
from (pry):1:in `read'
IO documentation中read方法的签名解释了对fread方法的引用(在ruby中读取调用C中相应的fread)。
然而,EINVAL错误似乎是指发送到输入设备的错误建议,但我并不理解。
为了解决这个问题,我已经知道要提交给用户组烫发没有任何运气。
我的问题是:在我的情况下,“无效参数”错误意味着什么?
答案 0 :(得分:3)
请参阅man 2 read
,fread
后面的系统调用失败。
EINVAL fd is attached to an object which is unsuitable for reading; or
the file was opened with the O_DIRECT flag, and either the
address specified in buf, the value specified in count, or the
current file offset is not suitably aligned.
这基本上意味着附加到/dev/input/event9
的驱动程序对所请求的操作不满意。在您的情况下,可能是由于对齐问题(读取大小错误),请参阅https://www.kernel.org/doc/Documentation/input/input.txt以获取有关事件协议以及应如何读取事件设备的详细信息。