使用猫来反弹pipe道之间的angular色

我一直在阅读有关pipe道在Linux中,我遇到了一本书( http://linux-training.be/linuxsys.pdf,16页)

首先他们用mkfifo创build四个pipe道

$ mkfifo pipe33a pipe33b pipe42a pipe42b 

将/ bin / cat复制到./

 $ cp /bin/cat proj33 && cp /bin/cat proj42 

然后运行以下命令

 $ echo -nx | ./proj33 - pipe33a > pipe33b $ ./proj33 <pipe33b >pipe33a & 

这本书解释了最后的命令

您在上面看到的命令将创build两个proj33进程,使用cat来反弹pipe33a和pipe33b之间的x字符。

我的问题是我不明白最后的命令。 特别是为什么在./proj33和pipe33a之间使用“ – ”。 什么“ – ”做。 而这种设置又如何像交换charatier'x'的无限循环?

说明:为清晰起见,我将调用进程cat1和cat2而不是proj33。

  1. echo -nx输出字符“x”,并将其提供给cat1cat1只是cat命令的一个副本。
  2. cat1 - pipe33a > pipe33b :首先读取stdin(这就是-意思)并将其写入pipe33b 。 然后cat1试图从pipe33a读取,它必须等待。
  3. cat2 <pipe33b >pipe33a &cat2 <pipe33b >pipe33a &读取'x'并将其写回到pipe33a
  4. cat1现在可以从pipe33a读取'x'并将其写回到pipe33bpipe33b开始整个过程​​。

命令中的-表示cat (或者你的副本, proj33 )从标准输入中读取。 所以proj33连接标准输入和pipe33a的内容,发送到pipe33b

proj33的第二个实例从proj33读取(即第一个实例的输出)并将输出发送到pipe33a (即回到第一个实例)。

在第一个命令中需要启动该进程,允许您将一个字符echo到循环中。