rag*_*lmz 3 unix linux bash shell pipe
我一直在阅读有关Linux中管道的信息,我在书中找到了这一点(http://linux-training.be/linuxsys.pdf,第16页)
首先,他们用mkfifo创建了四个管道
$ mkfifo pipe33a pipe33b pipe42a pipe42b
Run Code Online (Sandbox Code Playgroud)
将/ bin / cat复制到./
$ cp /bin/cat proj33 && cp /bin/cat proj42
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令
$ echo -n x | ./proj33 - pipe33a > pipe33b
$ ./proj33 <pipe33b >pipe33a &
Run Code Online (Sandbox Code Playgroud)
本书将最后一条命令解释为
您在上面看到的命令将创建两个proj33进程,这些进程使用cat来弹跳pipe33a和pipe33b之间的x字符。
我的问题是我不明白最后一个命令。特别是为什么在./proj33和pipe33a之间使用'-'。“-”是做什么的。以及这种设置如何像交换字符'x'的无限循环一样起作用?
说明:为了清楚起见,我将调用进程cat1和cat2而不是proj33。
echo -n x输出字符“ x”并将其输入,cat1这只是cat命令的副本。cat1 - pipe33a > pipe33b:首先读取stdin(这是什么-意思)并将其写入pipe33b。然后cat1尝试从中读取内容pipe33a,因此必须等待。cat2 <pipe33b >pipe33a &pipe33b从中读取“ x” 并将其写回pipe33apipe33a然后将其写回以重新pipe33b开始整个过程。