1

我的理解

当我ls *.txt在某个 shell (bash/ksh/csh/sh/whatsoever_shell) 中输入命令时,

1) shell 首先扩展通配符表达式*.txt(egatxt, b.txt, c.txt)
2) 然后fork()sa 子进程
3) 调用exec()(或其变体)将扩展表达式作为命令行参数

我的理解正确吗?或者这是否以涉及管道的其他方式发生?

4

1 回答 1

3

你的理解是正确的。无需使用管道,因为子进程可以共享 shell 的标准 I/O 文件描述符。

于 2013-11-09T13:13:07.533 回答