脚本运行程序时,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