-1

我还是操作系统领域的新手。目前我正在尝试在 C 中实现一个 shell,主要功能之一是管道的能力。我的问题是:在执行 fork dup 和其他需要的过程之后,如果我有多个参数,我应该如何在 execl 中编写。例如,一旦我将有一个管道 3 个进程,例如 sth | 某事 | sth 其他时候有两个喜欢的 sth | 某事

4

1 回答 1

0

假设您有简单的管道,例如ls | wc. 它可能会像这样可视化:

        +----+ +----+
------> | ls | ----------------------------------> | 厕所 | -------->
(stdin) +----+ (管道写入结束) (管道读取结束) +----+ (stdout)

每个程序都需要一个单独的子进程,fork由主 shell 进程创建。然后,每个子进程exec都会像往常一样调用。

一般来说,对于包含n程序的管道,您需要n进程和n - 1管道。它可以被推广并放入一个循环中。

于 2020-11-07T19:36:35.740 回答