【问题标题】:How to use execl in order to pipe multiple processes如何使用 execl 来管理多个进程
【发布时间】:2020-11-07 18:59:16
【问题描述】:

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

【问题讨论】:

    标签: c shell operating-system execl


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我理解我的问题是关于 execl 命令的概念。如果我有 3 个参数,我是否必须在 execl 中调用所有参数
    • @SirScroll 您调用exec 函数就像您通常对您的shell 尝试运行的任何其他程序所做的那样。
    猜你喜欢
    • 2014-04-12
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多