我对操作系统domnain还是个新手。目前,我正在尝试用C语言实现一个shell,其中一个主要功能是管道功能。我的问题是:在执行fork-dup和其他所需的进程之后,如果我有多个参数,我应该如何在execl中写入。例如,有一次我会有一个管道,有三个过程,比如某事物其他两个过程
假设您有类似ls | wc
的简单管道。它可能是这样可视化的:
+----++----+------>|ls|------------------------------>|wc|------->(stdin(+----+(管道写入端((管道读取端(+-----+(stdout(
每个程序都需要一个单独的子进程,由主shell进程中的fork
创建。然后,每个子进程都会像通常那样调用exec
。
一般来说,对于包含n
程序的管道,需要n
进程和n - 1
管道。它可以被推广并放入一个循环中。