【发布时间】:2017-12-20 20:13:04
【问题描述】:
我在 Linux 上使用 minicom 与 PDP-11 通信,并使用here 描述的 shell 脚本下载二进制文件。我看到的是“pv”显示的进度条显示下载几乎是立即进行的,而不是串行线路运行的 9600 bps(它是 Linux 端的真正串行端口,而不是 USB 串行加密狗) .
它可以工作,但随着下载量变大,结尾会被切断。如果我在脚本末尾增加 sleep() 时间,我可以让它再次工作。
在我看来,输出正在内核中缓冲,如果脚本(奇怪的是不是 pv 程序)退出太快,那么缓冲区就会被刷新。
我尝试编写自己的小 C 程序来代替 shell 脚本和 pv,认为通过使用 setvbuf() 设置 _IONBF 我可以解决这个问题。结果相同。
关于如何关闭此缓冲的任何想法,无论是在 pv 中还是通过编写我自己的程序?谢谢。
【问题讨论】: