等待子进程完成需要关闭标准输出吗?

等待子进程完成需要关闭标准输出吗?

我有一个问题来自https://mywiki.wooledge.org/BashFAQ/106

看看这段代码:

exec > >(tee myfile)
pspid=$!

# ... stuff ...
echo "A"
cat file
echo "B"
# end stuff

# All done.  Close stdout so the proc sub will terminate, and wait for it.
exec >&-
wait $pspid


# what happens if we delete line exec >&- ?
# what if ...stuff... do not finish before >&- ?

我的第一个问题是我们为什么需要exec >&-这里?如果我们删除它会发生什么?我猜删除exec >&-会导致wait $pspid无限期等待。

由于tee myfile在后台异步运行,我预计stuff会无序处理。所以我的第二个问题是,如果其中任何一个stuff之前没有完成怎么办>&-

相关内容