我一直在阅读有关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。
echo -nx
输出字符“x”,并将其提供给cat1
, cat1
只是cat命令的一个副本。 cat1 - pipe33a > pipe33b
:首先读取stdin(这就是-
意思)并将其写入pipe33b
。 然后cat1试图从pipe33a
读取,它必须等待。 cat2 <pipe33b >pipe33a &
从cat2 <pipe33b >pipe33a &
读取'x'并将其写回到pipe33a
pipe33b
, pipe33b
开始整个过程。 命令中的-
表示cat
(或者你的副本, proj33
)从标准输入中读取。 所以proj33
连接标准输入和pipe33a
的内容,发送到pipe33b
。
proj33
的第二个实例从proj33
读取(即第一个实例的输出)并将输出发送到pipe33a
(即回到第一个实例)。
在第一个命令中需要启动该进程,允许您将一个字符echo
到循环中。