我怎样才能发送一个过程的标准输出,使用在Unix中(或Windows)(preferably未命名)管道的多个进程? [英] How can I send the stdout of one process to multiple processes using (preferably unnamed) pipes in Unix (or Windows)?
问题描述
我想过程PROC1的标准输出重定向到两个进程PROC2和PROC3:
PROC2 - >标准输出
/
PROC1
\\
PROC3 - >标准输出
我试过
PROC1 | (PROC2&安培; PROC3)
但它似乎不工作,即
回声123 | (TR 1&安培; TR 1 B)
写
B23
要stdout,而不是
A23
B23
在UNIX(或在Mac),使用的 T恤
命令:
$ 123回声|三通>(TR 1)| TR图1B
B23
A23
通常你会使用 T恤
来将输出重定向到多个文件,但使用>(...),你可以
重定向到另一个进程。所以,在一般情况下,
$ PROC1 |三通>(PROC2)...>(procN-1)| procN
会做你想做的。
在Windows下,我不认为内置的外壳有等效。微软的<一个href=\"http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx\">Windows PowerShell的有一个 T恤
命令虽然。
I'd like to redirect the stdout of process proc1 to two processes proc2 and proc3:
proc2 -> stdout
/
proc1
\
proc3 -> stdout
I tried
proc1 | (proc2 & proc3)
but it doesn't seem to work, i.e.
echo 123 | (tr 1 a & tr 1 b)
writes
b23
to stdout instead of
a23
b23
In unix (or on a mac), use the tee
command:
$ echo 123 | tee >(tr 1 a) | tr 1 b
b23
a23
Usually you would use tee
to redirect output to multiple files, but using >(...) you can
redirect to another process. So, in general,
$ proc1 | tee >(proc2) ... >(procN-1) | procN
will do what you want.
Under windows, I don't think the built-in shell has an equivalent. Microsoft's Windows PowerShell has a tee
command though.
这篇关于我怎样才能发送一个过程的标准输出,使用在Unix中(或Windows)(preferably未命名)管道的多个进程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!