私はRS232から猫のファイルにデータを記録しようとしていました:
cat /dev/ttyS0 > rs232.log
その結果、最後の行を除いてすべてがファイルに含まれていました。
stdoutに出力することで、猫が改行文字('\ n')を取得した場合にのみ出力を書き込むことを発見できました。私は同じことを発見しました:
dd bs=1 if=/dev/ttyS0 of=rs232.log
読んだ後Perlで改行を待たずにテキストをすぐに印刷するにはどうすればよいですか?私は、これがLinux-Kernelまたはcoreutilsパッケージのいずれかのバッファリングの問題である可能性があるかどうかを考え始めていました。
TJDのコメントによると、私はCで自分のプログラムを作成しましたが、それでも同じ問題がありました。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* args[])
{
char buffer;
FILE* serial;
serial = fopen(args[1],"r");
while(1)
{
buffer = fgetc(serial);
printf("%c",buffer);
}
}
私自身のCコードの結果として、これはLinuxカーネル関連の問題のようです。