如何将所有输出流传输到另一个进程?

如何将所有输出流传输到另一个进程?

采用以下 Bash 脚本3-output-writer.sh

echo A >&1
echo B >&2
echo C >&3

当然,当. 3-output-writer.sh它运行时会出现错误3: Bad file descriptor,因为 Bash 不知道如何处理第三个输出流。不过,人们可以很容易地做到这一点. 3-output-writer.sh 3>file.txt,并且 Bash 会感到高兴。

但问题是:如何将所有这些都通过管道传输到另一个进程中,以便它可以同时使用这三个进程?除了创建三个命名管道之外,还有其他方法吗,例如,

mkfifo pipe1 pipe2 pipe3  # prepare pipes
. 3-output-writer.sh 1>pipe1 2>pipe2 3>pipe3 &  # background the writer, awaiting readers
3-input-reader pipe1 pipe2 pipe3  # some sort of reader, careful not to block
rm pipe1 pipe2 pipe3

相关内容