Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我ls *.txt在某个 shell (bash/ksh/csh/sh/whatsoever_shell) 中输入命令时,
ls *.txt
1) shell 首先扩展通配符表达式*.txt(egatxt, b.txt, c.txt) 2) 然后fork()sa 子进程 3) 调用exec()(或其变体)将扩展表达式作为命令行参数
*.txt
fork()
exec()
我的理解正确吗?或者这是否以涉及管道的其他方式发生?
你的理解是正确的。无需使用管道,因为子进程可以共享 shell 的标准 I/O 文件描述符。