Linux 当脚本运行程序时,stdout会发生什么情况?
我有一个嵌入式应用程序,我想要一个简单的记录器 系统从一个脚本文件开始,脚本文件反过来运行应用程序。脚本无法运行应用程序可能有各种原因,或者应用程序本身无法启动。要远程诊断这个问题,我需要从脚本和应用程序中查看stdout 我试着编写一个类似于tee的记录器,将其stdin重复到stdout,并将文本保存在FIFO中,以便稍后通过网络检索。然后我天真地尝试了Linux 当脚本运行程序时,stdout会发生什么情况?,linux,embedded-linux,Linux,Embedded Linux,我有一个嵌入式应用程序,我想要一个简单的记录器 系统从一个脚本文件开始,脚本文件反过来运行应用程序。脚本无法运行应用程序可能有各种原因,或者应用程序本身无法启动。要远程诊断这个问题,我需要从脚本和应用程序中查看stdout 我试着编写一个类似于tee的记录器,将其stdin重复到stdout,并将文本保存在FIFO中,以便稍后通过网络检索。然后我天真地尝试了 ./script | ./logger 最后,只有脚本stdout进入记录器,而应用程序stdout消失了。我在试T的时候也有类似的
./script | ./logger
最后,只有脚本stdout进入记录器,而应用程序stdout消失了。我在试T的时候也有类似的结果
系统运行内核2.4.26和busybox
发生了什么,我如何才能达到我想要的目的?显然,应用程序的输出并没有在标准输出上结束
nohup
,exec
或类似实用程序)结果证明它完全按照我的想法工作,只是有一个小问题。stdout正在被缓冲,没有任何fflush(stdout)命令,我从未见过它。如果我真的有耐心,当标准输出缓冲区填满时,我会突然看到大量输出。调用setlinebuf(3)修复了我的问题。1。我刚试过。这没用。可能有一些stderr,但大部分输出都是stdout。2.我想我一点也没做。3.没有守护进程。是的。我没有看到原始线程中的任何内容。
./script.sh 2>&1 | ./logger