linux - 当脚本运行程序时,stdout 会发生什么?

标签 linux embedded-linux

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

系统从脚本文件开始,脚本文件依次运行应用程序。脚本无法运行应用程序可能有多种原因,或者应用程序本身可能无法启动。要远程诊断此问题,我需要从脚本和应用程序查看标准输出。

我尝试编写一个类似 tee 的记录器,它将其标准输入重复到标准输出,并将文本保存在 FIFO 中,以便以后通过网络检索。然后我天真地尝试了一下

./script | ./logger  

我最终只有脚本标准输出进入记录器,而应用程序标准输出消失了。我在尝试发球时得到了类似的结果。

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

发生了什么,我怎样才能达到我想要的目的?

最佳答案

事实证明它完全按照我的预期工作,但有一个小问题。 stdout 正在被缓冲,并且没有任何 fflush(stdout) 命令,我从未见过它。如果我真的有耐心,当 stdout 缓冲区填满时,我会突然看到大量输出。调用 setlinebuf(3) 解决了我的问题。

关于linux - 当脚本运行程序时,stdout 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631653/

相关文章:

linux - 创建一个函数来别名 linux

linux - 我在哪里可以找到 amazon linux 上的 apxs?

Linux 内核 : invoke call back function in user space from kernel space

linux - 在新终端中找不到自定义命令

c - OMAP3 上奇怪的 SD 卡是 omap_hsmmc 驱动程序吗?

c - linux - mmap 共享最大大小

c - 在 Linux 中保护文件不被编辑

linux - 为什么ldconfig能够找到一个库,但是找不到Rust?

linux - 如何使用系统调用获取进程的pid?

linux - Beaglebone 中的中断