如何在没有缓冲区的情况下保存tty?

时间:2011-06-01 12:50:04

标签: bash stdout unbuffered-output

我遇到缓冲区问题:

我有一个守护进程D,它的监视器M. D在M之前启动,并且M将任何相关信息打印到tty,我需要解析这些信息并将其提供给我自己的程序。

由于我想自动执行此操作,因此M应该打印到文件。但是直到守护进程因为缓冲区而被杀死时才会这样做。

所以我考虑记录tty,因此尝试使用脚本将输出记录到终端但是...它也被缓冲了......

我也试过访问gnu coreutils(使用我显然需要的stdbuf),但是当我无法安装该实用程序来解压缩GNU网站上提出的特殊.xz格式时,我不得不放弃!

我担心我甚至没做正确的事! 是不是有一个简单的解决这个问题的方法,可能每个使用实时工作的人都有?

一点帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

  1. .xz文件格式可以使用xz7zip
  2. 提取
  3. 似乎还有一个LD_PRELOAD黑客可以达到相同的结果:http://lists.gnu.org/archive/html/bug-coreutils/2008-11/msg00164.html
  4. 此页面是我对stdio缓冲的首选参考:http://www.pixelbeat.org/programming/stdio_buffering/

    <子> PS。 “每个与实时合作的人”都可能使用IPC并且不依赖于bash。 Perl,python和显然所有低级语言提供了明确禁用/启用缓冲的方法