我正在编写一个过滤器,我正在探索编写程序的方法。我想知道这是否可能:从stdin中的输入,写入stdout,但重定向此stdout,以便程序再次读取生成的stdout,就好像它是stdin一样,从而重新处理数据。我不希望将数据存储在一个巨大的数组中 - 我希望仅使用流来实现这一点。这甚至可能吗? (如果没有,那也没关系。)另外,请注意:我希望只在C代码的单个源文件中执行此操作。
答案 0 :(得分:2)
是的,您可以在任何POSIX系统中为自己创建pipe。
但是没有免费的午餐。如果你需要存储数据,它必须去某个地方。管道由OS管理的缓冲区支持。
您可以将管道的末端设置为返回stdin
和stdout
(如Joachim的答案),但我建议不要这样做,因为它会覆盖通常的输入和输出通道该计划。 (C和任何POSIX服务都不会“播放”流,因此用户可以看到它,并让它在程序中回显。)
答案 1 :(得分:1)