【发布时间】:2018-09-04 14:29:44
【问题描述】:
我试图了解 C 中管道的内部工作。我注意到如果我运行
int main() {
system("ls | grep d | wc");
}
输出:
3 3 53
但是在使用 bash 运行相同的命令时,我得到了
3 3 104
ls 的输出 | grep
question_1.pdf question_2.pdf question_2_dataset.txt
有人能解释造成这种差异的原因吗?
如果我通过 C 中的 pipe() 调用使用管道,也会发生同样的事情。
【问题讨论】:
-
去掉
wc。两种情况下ls | grep d的输出是什么? -
ls 通常是交互式 shell 中的别名。
command ls |grep d | wc是做什么的? -
程序的子系统外壳和终端外壳的当前工作目录是否相同?
-
从命令行输入时
\ls | grep d | wc的输出是什么?alias | grep ls的命令行输出怎么样? -
@Cornstalks 是同一个目录