【发布时间】:2014-02-10 17:05:13
【问题描述】:
我正在编写一个过滤器,并且正在探索一种编写程序的方法。我想知道这是否可能:从标准输入中的输入写入标准输出,但重定向此标准输出,以便程序再次读取生成的标准输出,就好像它是标准输入一样,从而重新处理数据。我不希望将数据存储在一个巨大的数组中——我希望只使用流来做到这一点。这甚至可能吗? (如果不是,那也没关系。)另外,请注意:我希望仅在 C 代码的单个源文件中执行此操作。
【问题讨论】:
-
这很有可能,但如何做到这一点很大程度上取决于您使用的系统(例如 Windows 或 POSIX(如 Linux、OSX))?
-
对不起,我刚刚添加了一条注释:我只想使用代码来执行此操作。我相信这可以通过 Unix 命令行上的管道来实现,但我想使用纯 C 来做到这一点。
-
@JoachimPileborg Windows 有足够的 POSIX 接口来执行此操作,不是吗?
-
@Potatoswatter 大多数情况下,但仍然有些不兼容(尤其是它的
_pipe函数)。 -
您可以用您的标准输出替换您当前的标准输入。但听起来你宁愿消耗整个现有的标准输入,然后重新处理你创建的输出?
标签: c pipe stdout stdin io-redirection