1

我想在 c 中实现多管道,所以我可以做这样的事情,这|||意味着将标准输入复制到 N 管道命令):

cat /tmp/test.log ||| wc -l ||| grep test1 ||| grep test2 | grep test3

这将返回给我文件中的行数文件中包含“test1”字符串行以及文件中包含“test2”&&“test3”字符串的行

换句话说,这将具有以下 3 个常规管道的效果:

cat /tmp/test.log  | wc -l --> stdout
                   | grep test1 --> stdout
                   | grep test2 | grep test3 --> stdout

有人已经实现了这样的东西吗?我没有找到任何东西... 注意:我知道它可以使用脚本语言或 bash 多个文件描述符来完成,但我正在搜索 C 代码来完成它。

谢谢!

4

2 回答 2

4

也许您应该从tee命令开始并检查他们的代码

于 2011-07-25T21:30:01.410 回答
0

因为在 C 中不可能有多个进程(或线程)读取同一个文件描述符而不耗尽读取的数据,所以所有解决方案都必须将读取的数据存储在一个临时文件中,然后每个都读取临时文件。

于 2011-08-29T18:43:41.083 回答