![等待子进程完成需要关闭标准输出吗?](https://linux22.com/image/188174/%E7%AD%89%E5%BE%85%E5%AD%90%E8%BF%9B%E7%A8%8B%E5%AE%8C%E6%88%90%E9%9C%80%E8%A6%81%E5%85%B3%E9%97%AD%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%E5%90%97%EF%BC%9F.png)
我有一个问题来自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
之前没有完成怎么办>&-
?