我试图将来自 RS232 的数据记录到带有 cat 的文件中:
cat /dev/ttyS0 > rs232.log
结果是我的文件中除了最后一行之外的所有内容。
通过打印到标准输出,我发现,只有当 cat 获得换行符('\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 内核相关的问题。