hidraw0 が USB マウスだったので、ターミナルで cat /dev/hidraw0 と入力してデバイス ファイル /dev/hidraw0 を読み取りました。出力は一連の文字でした。このシーケンスは、マウスを動かし、クリックし、スクロールしたときに生成されました。
次に、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 コマンドほど速くは更新されませんでした。
なぜこれが起こるのですか?