采用以下 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
?