linux - 在命令行参数中使用管道

标签 linux pipe

我正在完成一项有关 Linux 中管道的作业。我有一个打印 hello world 的程序。它不需要任何参数。但是当我运行程序并提供命令行参数时 ./a ls | wc 。我得到输出 0 2 11hello 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/

相关文章:

linux - DD 脚本和操作数预期错误

c - 如何在 Linux 中使用 ioctl(原始分区)正确刷新磁盘缓存

R:Mac 和 Ubuntu 之间的彩色 R 输出差异

c - 动态内存和 fgets

python - 使用 python subprocess.check_output 进行实时管道或解决方法?

C char 数组和指针 - 归并排序的合并

linux - 运行 hello-world 的 Oracle Linux 上的 “Error response from daemon: Cannot start container … no such file or directory”

c++ - 如何将应用程序与静态库链接+为什么这不起作用

c++ - 为什么读写管道时需要关闭fds?

c - 在 C 中使用管道和 fork 重定向标准输出