1

我在终端中通过键入 cat /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 命令那样快速更新。

为什么会这样?

4

2 回答 2

1

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

于 2013-01-26T16:53:56.233 回答
0

如果您在 printf, 之后刷新标准输出是否有帮助fflush(stdout);

于 2013-01-26T17:58:58.497 回答