gpt4 book ai didi

c - C 中使用 pipe()、execlp() 和 dup() 的三重管道

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:14 27 4
gpt4 key购买 nike

考虑一个新的运算符“|||”。它将获取上一个程序的输出和将其作为输入传递给三个不同的程序。给出一个程序 triplepipe.c 用于执行以下命令:ls –l |唯一||| grep ^d, grep ^-, grep^p。不要使用 popen() 库调用、system() 库调用或临时文件。

我正在使用以下逻辑来解决问题的第一部分。 'ls -l' 在 child1 中完成,'uniq' 在 child2 中使用 child1 的标准输出作为标准输入,在父级中使用 child2 的标准输出作为标准输入 'grep ^d'。我能够看到输出。

但我不知道如何将 child2 的输出提供给三个满足限制集的独立 grep。有人可以帮忙吗?

最佳答案

这个任务的一部分基本上是实现一个 3-way tee。设置管道和子进程后,您将不得不进入一个循环,该循环读取一次并写入 3 次,直到读取命中 EOF。

在 Linux 中还有一个 tee 系统调用,它不在您的禁止列表中。这对于这个项目来说是完美的,但它是相当新的,所以你的老师很可能还不知道。

关于c - C 中使用 pipe()、execlp() 和 dup() 的三重管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26105780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com