gpt4 book ai didi

bash - 为什么 tee 等待所有子 shell 完成?

转载 作者:行者123 更新时间:2023-11-29 09:24:04 25 4
gpt4 key购买 nike

我有一个运行 mysqld 的服务器脚本并 fork 以继续运行。例如:

./mysqld <parameters> &
echo "Parent runs next line in script."
<do more stuff>

为什么tee要等到子进程结束后才会自己结束?

编辑:

例如,以下总是挂起:

./myscript | tee -a logfile.log

最佳答案

因为如果子进程仍在运行(并且其标准输出仍处于打开状态),则无法确定它是否已完成所有输出。

由于 parent 和 child 使用相同的标准输出(连接到 tee 的输入,由于管道),tee 无法区分它们。由于它会消耗所有输入,因此在 tee 看到输入结束条件之前,父子都必须关闭它们的标准输出(或终止)。

如果您希望 tee 在父脚本退出时退出,您应该重定向子脚本的输出(例如到文件或 /dev/null)。

关于bash - 为什么 tee 等待所有子 shell 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com