【发布时间】:2013-01-10 10:33:21
【问题描述】:
我在终端中通过键入读取设备文件 /dev/hidraw0 猫 /dev/hidraw0 由于 hidraw0 是 USB 鼠标,因此输出是一个字符序列。这个序列是在我移动鼠标、单击和滚动时生成的。
然后我也用 C 程序尝试了这个。代码是,
include<stdio.h>
int main()
{
FILE *ptr_file;
char buf[1000];
ptr_file =fopen("/dev/hidraw0","r");
if (!ptr_file)
return 1;
char c;
while (1)
{
c=fgetc(ptr_file);
if(c != NULL)
printf("%c",c);
else
printf("");
}
fclose(ptr_file);
return 0;
}
这也产生了相同的(我想)字符序列。但是以非常异步的方式。它没有像 cat /dev/hidraw0 命令那样快速更新。
为什么会这样?
【问题讨论】:
-
您创建了一个缓冲区,但正在读取单个字符...
-
您还可以了解更多关于多路复用系统调用的信息,例如 kernel.org/doc/man-pages/online/pages/man2/poll.2.html
标签: c linux character linux-device-driver device-driver