我一直在研究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”?你看到的这些命令将创建两个使用cat的proj33进程,用于在pipe33a和pipe33b之间反弹字符x。
echo 1 | cat file - > file.out
将把标准输入附加到来自file
的内容中,并将结果写入file.out
;而cat - file
则先读取标准输入。 - Andreas Louv