我希望能够使用三个不同的程序分析进程的标准输出。目前,我已经成功地使用了命名管道,但是是否可以使用文件描述符实现呢?
以下是目前能够正常工作的代码:
exec 3< <(myprog)
tee p1 p2 >/dev/null <&3
cat p1|ap1 &
cat p2|ap2 &
其中,p1和p2是通过mkfifo创建的管道文件,而ap1和ap2则是用来进行分析的程序。我不确定我是否表述得正确,但是否有一种方法可以将tee命令输出到两个新的文件描述符中呢?类似于这样:
exec 3< <(myprog)
tee >&4 >&5 <&3
cat <&4|ap1 &
cat <&5|ap2 &
<()
和>()
的shell中工作的优点),但语法很笨拙。在这里,将ap1
和ap2
定义为函数会更简单。 - Gilles 'SO- stop being evil'>()
可能不太适用。但我不知道还有什么其他方法可以调用它。有什么想法吗?非常感谢你迄今为止的帮助。 - User1>()
的情况下完成它;但你要为了可移植性而这样做,而不是为了可读性!我坚持认为,在你的情况下,函数是最好的选择。 - Gilles 'SO- stop being evil'