【问题标题】:Reading character devices in linux在linux中读取字符设备
【发布时间】: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 命令那样快速更新。

为什么会这样?

【问题讨论】:

标签: c linux character linux-device-driver device-driver


【解决方案1】:

尝试通过使用_IONBF 调用setvbuf() 来禁用ptr_file 缓冲。

【讨论】:

    【解决方案2】:

    如果在 printf fflush(stdout); 之后刷新标准输出会有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 2016-10-10
      • 2015-06-04
      • 1970-01-01
      相关资源
      最近更新 更多