编程语言
首页 > 编程语言> > 脚本运行程序时,stdout会怎样?

脚本运行程序时,stdout会怎样?

作者:互联网

我有一个嵌入式应用程序,想要一个简单的记录器.

系统从脚本文件启动,该脚本文件随后运行该应用程序.脚本无法运行应用程序可能有多种原因,或者应用程序本身无法启动.要远程诊断,我需要从脚本和应用程序中查看标准输出.

我尝试编写一个类似tee的记录器,将其stdin重复为stdout,并将文本保存在FIFO中,以便以后通过网络检索.然后我天真地尝试

./script | ./logger  

最后,只有脚本stdout进入记录器,而应用程序stdout消失了.我尝试开球也有类似的结果.

系统正在运行内核2.4.26和busybox.

这是怎么回事,我该如何完成我想要的目标?

解决方法:

事实证明,它的工作与我认为的完全一样,只有一个小问题. stdout已被缓冲,并且没有任何fflush(stdout)命令,我从未见过.如果我真的很耐心,那么当stdout缓冲区填满时,我会突然看到大量输出.调用setlinebuf(3)解决了我的问题.

标签:embedded-linux,linux
来源: https://codeday.me/bug/20191031/1978774.html