我一直在阅读有关Linux中管道的信息,我在书中看到了这一点(http://linux-training.be/linuxsys.pdf,第16页)

首先,他们用mkfifo创建了四个管道

$ mkfifo pipe33a pipe33b pipe42a pipe42b

将/bin/cat复制到./
$ cp /bin/cat proj33 && cp /bin/cat proj42

然后运行以下命令
$ echo -n x | ./proj33 - pipe33a > pipe33b
$ ./proj33 <pipe33b >pipe33a &

本书将最后一条命令解释为



我的问题是我不明白最后一个命令。特别是为什么在./proj33和pipe33a之间使用'-'。 “-”是做什么的。而且,这种设置如何像交换字符'x'的无限循环一样起作用?

最佳答案

说明:
为了清楚起见,请注意将进程称为cat1和cat2而不是proj33。

  • echo -n x输出字符“x”,并将其提供给cat1,它只是cat命令的副本。
  • cat1 - pipe33a > pipe33b:首先读取stdin(这就是-的意思)并将其写入pipe33b。然后cat1尝试从pipe33a读取,并且必须等待。
  • cat2 <pipe33b >pipe33a &pipe33b中读取'x'并将其写回pipe33a
  • cat1现在可以从pipe33a中读回'x'并将其写回到pipe33b中,从而重新开始整个过程​​。
  • 09-28 07:26