我正在尝试使用cat将RS232数据记录到文件中:
阅读完 如何在Perl中立即打印文本而不等待换行 后,我开始思考这可能是 Linux 内核或 coreutils 包的缓冲问题。
根据 TJD 的评论,我用 C 写了自己的程序,但仍然遇到相同的问题:
根据我的 C 代码结果,这似乎是与 Linux 内核相关的问题。
cat /dev/ttyS0 > rs232.log
结果是我的文件中所有的内容都有,除了最后一行。
通过将输出打印到标准输出,我发现只有在输出包含换行符 ('\n') 时,cat 才会将其写入。我也用以下方法得到了相同的结论:
dd bs=1 if=/dev/ttyS0 of=rs232.log
阅读完 如何在Perl中立即打印文本而不等待换行 后,我开始思考这可能是 Linux 内核或 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 内核相关的问题。
sysread
。 - aqn