我正在完成一项有关 Linux 中管道的作业。我有一个打印 hello world
的程序。它不需要任何参数。但是当我运行程序并提供命令行参数时 ./a ls | wc
。我得到输出 0 2 11
即 hello world
的输出通过管道传递到wc
。有人可以解释一下这种行为吗?
最佳答案
因为您的程序不接受参数,所以将其作为参数传递 ls
对其输出没有影响:它会忽略该参数并仍然发出 hello world
,就像未在其参数列表中传递 ls
时一样。
理解管道建立了一个 FIFO——也就是说,它连接两个程序。
./a ls ## this program's output...
wc ## ...is connected to this program's input.
因此,管道不是a
的论点;它是一条向 shell 发送的指令,说明如何路由 a
的输出,在本例中,这条指令将其路由到 wc
的标准输入。
关于linux - 在命令行参数中使用管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810931/