我还是操作系统领域的新手。目前我正在尝试在 C 中实现一个 shell,主要功能之一是管道的能力。我的问题是:在执行 fork dup 和其他需要的过程之后,如果我有多个参数,我应该如何在 execl 中编写。例如,一旦我将有一个管道 3 个进程,例如 sth | 某事 | sth 其他时候有两个喜欢的 sth | 某事
问问题
48 次
1 回答
0
假设您有简单的管道,例如ls | wc
. 它可能会像这样可视化:
+----+ +----+ ------> | ls | ----------------------------------> | 厕所 | --------> (stdin) +----+ (管道写入结束) (管道读取结束) +----+ (stdout)
每个程序都需要一个单独的子进程,fork
由主 shell 进程创建。然后,每个子进程exec
都会像往常一样调用。
一般来说,对于包含n
程序的管道,您需要n
进程和n - 1
管道。它可以被推广并放入一个循环中。
于 2020-11-07T19:36:35.740 回答