我正在研究Linux上的管道作业。我有一个打印hello world
的程序。它不需要参数。但是当我运行程序并提供命令行参数为./a ls | wc
时。我得到输出0 2 11
,即hello world
的输出通过管道传递给wc
。有人可以解释一下这种行为。
答案 0 :(得分:2)
因为你的程序没有参数,你传递它ls
作为参数的事实对它的输出没有区别:它忽略了那个参数并且仍在发出{ {1}},就像它的参数列表中没有传递hello world
一样。
了解管道设置FIFO - 即连接两个程序。
ls
因此,管道不是参数到./a ls ## this program's output...
wc ## ...is connected to this program's input.
;它是关于如何路由a
的输出的shell的指令,在这种情况下是将其路由到a
的标准输入的指令。