nev*_*gqs 3 bash pipeline tee subshell
我有一个运行mysqld的服务器脚本,并且forks继续运行.举个例子:
./mysqld <parameters> &
echo "Parent runs next line in script."
<do more stuff>
Run Code Online (Sandbox Code Playgroud)
为什么tee等待子进程在结束之前结束?
编辑:
例如,以下内容始终挂起:
./myscript | tee -a logfile.log
Run Code Online (Sandbox Code Playgroud)
因为如果子进程仍在运行(并且仍然打开其标准输出),它无法确定它是否已经完成所有输出.
由于父和子使用相同的标准输出(tee由于管道而连接到输入),因此无法tee区分它们.由于它消耗所有输入,因此父和子必须在tee看到和输入结束条件之前关闭它们的标准输出(或终止).
如果要tee在父脚本执行时退出,则应将子项的输出重定向到/dev/null(例如,文件或文件).
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |