我怎样才能发送一个过程的标准输出,使用在Unix中(或Windows)(preferably未命名)管道的多个进程? [英] How can I send the stdout of one process to multiple processes using (preferably unnamed) pipes in Unix (or Windows)?

查看:102
本文介绍了我怎样才能发送一个过程的标准输出,使用在Unix中(或Windows)(preferably未命名)管道的多个进程?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想过程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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆