【问题标题】:Binary downloads with minicom get truncated使用 minicom 下载的二进制文件被截断
【发布时间】: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 中还是通过编写我自己的程序?谢谢。

【问题讨论】:

    标签: linux buffering


    【解决方案1】:

    调查 minicom 的源代码表明它确实会在子程序返回时刷新缓冲区,因此有必要让该程序等待。

    我从未找到关闭缓冲的方法,但我确实找到了 tcdrain() 函数,该函数允许我的程序等到数据传输完毕后再退出。

    【讨论】:

      猜你喜欢
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2012-12-16
      • 1970-01-01
      • 2013-08-30
      • 2018-08-08
      相关资源
      最近更新 更多