我有一个嵌入式应用程序,我想要一个头脑简单的记录器。
系统从脚本文件开始,脚本文件依次运行应用程序。脚本无法运行应用程序可能有多种原因,或者应用程序本身可能无法启动。要远程诊断此问题,我需要从脚本和应用程序查看标准输出。
我尝试编写一个类似 tee 的记录器,它将其标准输入重复到标准输出,并将文本保存在 FIFO 中,以便以后通过网络检索。然后我天真地尝试了一下
./script | ./logger
我最终只有脚本标准输出进入记录器,而应用程序标准输出消失了。我在尝试发球时得到了类似的结果。
系统正在运行内核 2.4.26 和 busybox。
发生了什么,我怎样才能达到我想要的目的?
最佳答案
事实证明它完全按照我的预期工作,但有一个小问题。 stdout 正在被缓冲,并且没有任何 fflush(stdout) 命令,我从未见过它。如果我真的有耐心,当 stdout 缓冲区填满时,我会突然看到大量输出。调用 setlinebuf(3) 解决了我的问题。
关于linux - 当脚本运行程序时,stdout 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631653/